[英]mod_rewrite issue on Vagrant
我剛剛轉向Vagrant,設置了一個LAMP堆棧,到目前為止我真的非常高興。 我遇到的唯一問題是mod_rewrite。 我已經確認mod_rewrite已打開並且它正在用於重定向。
以下代碼位於我的vhost文件中:
<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重命名為tools-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文件之前加載該文件。
我不認為這是一個特別的Vagrant問題,它可能只是Apache或mod_rewrite中的一個設置我需要打開/關閉或配置。 有誰之前經歷過這個嗎?
解
正如Jon Lin在下面提到的,打開MultiViews
是一個問題。 我選擇在我的vhosts文件中禁用它,而不是Jon建議直接從.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>
這聽起來像一個多視圖問題。 多視圖是mod_negotiation的一部分,並嘗試“猜測”URL可以映射到的資源。 因此,當它在URL中看到/tools/
並且它看到文件/tools.php
,它會直接將請求映射到php文件,從而完全繞過mod_rewrite。
嘗試將此添加到您的htaccess文件:
Options -Multiviews
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.