我有一个包含十几条规则的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相当新。如果还有其他一些细节,我会忘记问,我会编辑问题。
答案 0 :(得分:0)
尝试删除Multiviews选项,此内容可播放文件扩展名。
这与mod_negociation
相关,并激活默认扩展搜索(您要求foo
并foo.html
和foo.php
已经过测试。