由于存在文件扩展名,mod_rewrite规则适用于localhost但不适用于生产服务器

时间:2014-06-30 09:10:22

标签: php apache .htaccess mod-rewrite

我有一个包含十几条规则的htaccess文件,所有这些都可以在localhost上正常工作。事实上,我的生产服务器上的所有工作都很好,唯一的问题是我每次从localhost迁移到生产时都会发现自己必须修改规则。确切的问题是在localhost(XAMPP)上,该规则仅在没有存在文件扩展名(在我的情况下为.php)的情况下工作,而在我的生产服务器上,恰恰相反

实施例

RewriteRule ^demopage.php/([0-9]+)/?$ /anotherpage.php?id=$1 [QSA]

以上内容适用于我的生产服务器,但不是 on localhost。

RewriteRule ^demopage/([0-9]+)/?$ /anotherpage.php?id=$1 [QSA]

以上内容适用于localhost,但位于我的自豪服务器上。

有关我的设置的更多信息

生产服务器与CentOs 6一起运行。我正在使用域的虚拟主机。以下是我的虚拟主机的配置:

<Directory /var/my/directory/path/my.domain.com>
        Options -Indexes +Multiviews +FollowSymLinks
        DirectoryIndex index.php index.html
        AllowOverride All
    Order allow,deny
        Allow from all
</Directory>

我的localhost上的配置有很多不同,我没有设置特定于目录的规则,所以我很难确定两个设置的不同之处。同样没有帮助,我对mod_rewrites相当新。如果还有其他一些细节,我会忘记问,我会编辑问题。

1 个答案:

答案 0 :(得分:0)

尝试删除Multiviews选项,此内容可播放文件扩展名。

这与mod_negociation相关,并激活默认扩展搜索(您要求foofoo.htmlfoo.php已经过测试。