我正在使用Mac OSX Lion和原生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上显示。在Windows 7上使用这些相同的规则工作没问题。我是否需要在apache中进行任何配置才能更改此内容?
答案 0 :(得分:0)
你有吗?mod_negotiation
安装?如果是这样,那将采取新的请求并尝试工作 你真正打算发送什么文件。确保你没有 {{1套。所以,在Options MultiViews
put.htaccess
。
答案 1 :(得分:0)
您的网站必须启用MultiViews
。如果是这样,/imovel.php
会因输入/imovel
而加载,因此,它会加载/imovel.php
而不是您的重写代码。但删除MultiViews
您将消除此问题。
为了解决此问题,我必须使用终端向httpd.conf
,vhost.conf
或user.conf
文件下的<Directory "/Users/User/Sites">
文件添加几行代码。< / p>
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文件夹中,并且在此文件中,有你的网站目录,我必须从MultiViews
删除options
代码。 /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文件中使用的代码。一切都在天堂里得到了解决。
如果有帮助,请告诉我。