2

我正在使用 Mac OSX Lion 和本机 apache,php5 安装重写引擎仍在工作仍然存在问题,这个问题比解释的更好,所以我在下面有这 2 个规则,一个有效,另一个无效:

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 中进行任何配置来更改它吗?

4

2 回答 2

0

这个问题

mod_negotiation 安装了吗?如果是这样,那将接受您的新请求,并尝试找出您真正要发送的文件。确保你没有 Options MultiViews设置。所以,在.htaccessputOptions -MultiViews中。

于 2013-02-05T16:18:56.307 回答
0

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

为了解决这个问题,我必须使用终端在我的文件或文件下的文件httpd.confvhost.conf添加user.conf几行代码。<Directory "/Users/User/Sites">

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 文件夹中,并且在这个文件中,上面的哪个文件都有你的站点目录,我的代码不得不MultiViewsoptions. /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.php 页面就不能再通过键入 /index 来加载。因此,我可以使用我最初在 .htaccess 文件中使用的代码。一切都在天堂里解决了。

让我知道这是否有帮助。

于 2013-12-07T09:50:40.003 回答