我正在使用Mac和原生apache,php5安装重写引擎仍然有一个问题,这个问题显示出来比解释好,所以我有以下两个规则,一个可以工作,另一个不能:
RewriteRule ^imovel/([a-z_A-Z0-9_-]+)/([a-z_A-Z0-9_-]+)/([a-z_A-Z0-9_-]+)/$ /imovel.php?imovel=$1此规则不起作用,它会转到文件imovel.php,但它不会传递变量,所以如果我将这个^imovel/更改为其他类似^blerg/的值,效果会很好,如下所示
RewriteRule ^blerg/([a-z_A-Z0-9_-]+)/([a-z_A-Z0-9_-]+)/([a-z_A-Z0-9_-]+)/$ /imovel.php?imovel=$1这条规则运行得很好,但这个问题只在我使用的mac上出现。在Windows7上使用同样的规则就可以了。是否需要在apache中进行任何配置才能更改此设置?
发布于 2013-12-07 17:50:40
您的站点必须启用MultiViews。如果是这样的话,/imovel.php将通过键入/imovel来加载,因此,它加载的是/imovel.php,而不是您的重写代码。但是删除MultiViews将会消除这个问题。
为了解决这个问题,我必须使用终端向我的httpd.conf、vhost.conf或<Directory "/Users/User/Sites">文件下的user.conf文件添加几行代码。
sudo nano /etc/apache2/httpd.conf
sudo nano /etc/apache2/users/user.conf
sudo nano /private/etc/apache2/extra/httpd-vhosts.conf我不知道在lion中哪里可以找到这些文件,但在mac osx maverick中,它在/etc/apache2/中,但它现在和将来都在Apache2文件夹中,在这个文件中,上面那个文件中有你的站点目录,这是我从options中删除MultiViews的代码。/Users/User/Sites是我自己的文件夹,所以忽略它,寻找你自己的站点文件夹。
<Directory "/Users/User/Sites">
Options Indexes FollowSymLinks SymLinksifOwnerMatch MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>所以它现在看起来是这样的
<Directory "/Users/User/Sites">
Options Indexes FollowSymLinks SymLinksifOwnerMatch
AllowOverride All
Order allow,deny
Allow from all
</Directory>一旦我这样做了,就不能再通过输入/index来加载/index.php页面。因此,我可以使用我最初在.htaccess文件中使用的代码。一切都在天堂里解决了。
如果有帮助,请告诉我。
发布于 2013-02-06 00:18:56
您安装了
mod_negotiation吗?如果是这样的话,这将接受你的新请求,并尝试找出你真正想要发送的文件。确保您没有设置Options MultiViews。因此,在.htaccess中放入Options -MultiViews.
https://stackoverflow.com/questions/11996011
复制相似问题