永久链接重写文件与规则相同的文件名

时间:2012-08-16 21:55:34

标签: php macos apache mod-rewrite permalinks

我正在使用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中进行任何配置才能更改此内容?

2 个答案:

答案 0 :(得分:0)

来自this question

  你有吗?   mod_negotiation   安装?如果是这样,那将采取新的请求并尝试工作   你真正打算发送什么文件。确保你没有   {{1套。所以,在Options MultiViews put .htaccess

答案 1 :(得分:0)

您的网站必须启用MultiViews。如果是这样,/imovel.php会因输入/imovel而加载,因此,它会加载/imovel.php而不是您的重写代码。但删除MultiViews您将消除此问题。

为了解决此问题,我必须使用终端向httpd.confvhost.confuser.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文件中使用的代码。一切都在天堂里得到了解决。

如果有帮助,请告诉我。