我剛剛搬遷到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