我刚刚搬迁到Vagrant,设置了一个LAMP堆栈,并且我非常高兴。我遇到的唯一问题是使用mod_rewrite。我已经确认mod_rewrite已打开,它正在为重定向工作。mod_rewrite问题Vagrant
下面的代码是在我的虚拟主机文件:
<VirtualHost *:80>
ServerName devserver.local
DocumentRoot /var/www/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/vagrant_dev-error.log
LogLevel warn
CustomLog /var/log/apache2/vagrant_dev-access.log combined
</VirtualHost>
然后我在我的.htaccess文件如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tools\/([a-zA-Z_]+)\.json$ tools.php?tool=$1 [QSA,L]
</IfModule>
基本上它是如何“用来工作”是我跑http://www.devserver.local/tools/test_function.json并重写为http://www.devserver.local/tools.php?tool=test_function
现在我在流浪汉上加载了tools.php,但没有查询字符串tool
(例如:http://www.devserver.local/tools.php)。这几乎就像有一些配置允许PHP文件在没有.php的情况下运行。
我可以得到它,如果我tools.php重命名为工具,test.php的和更新我的.htaccess工作:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tools\/([a-zA-Z_]+)\.json$ tools-test.php?tool=$1 [QSA,L]
</IfModule>
所以它检测tools.php退出并加载运行在这之前我的文件.htaccess文件。
我不认为它具体是一个流浪问题,它可能只是一个设置在Apache或mod_rewrite我需要打开/关闭或配置。有谁之前经历过这个吗?
SOLUTION
随着乔恩·林下文提到的,它是与MultiViews
问题被打开。我选择在我的虚拟主机文件中禁用它,而不是直接从.htaccess禁用它。两人都工作。
<VirtualHost *:80>
ServerName devserver.local
DocumentRoot /var/www/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/vagrant_dev-error.log
LogLevel warn
CustomLog /var/log/apache2/vagrant_dev-access.log combined
</VirtualHost>
您是如何安装LAMP?流浪汉不能影响Apache的工作。 – Cheery 2014-11-04 04:04:56
@Cheery我安装了我需要的每个模块。Apache,PHP,MySQL等都是分开的。我不认为这是一个流浪者的具体问题,可能只是我需要在mod_rewrite中配置的设置,以便在加载tools /时不会默认为tools.php。 – 2014-11-04 04:09:40