【发布时间】:2014-06-30 09:10:22
【问题描述】:
我有一个包含十几个规则的 htaccess 文件,在 localhost 上都可以正常工作。事实上,在我的生产服务器上也一切正常,唯一的问题是我发现自己每次从本地主机移动到生产服务器时都必须修改规则。确切的问题是,在 localhost (XAMPP) 上,该规则仅在没有存在文件扩展名(在我的情况下为 .php)的情况下有效,而在我的生产服务器上,情况正好相反。
示例
RewriteRule ^demopage.php/([0-9]+)/?$ /anotherpage.php?id=$1 [QSA]
以上在我的生产服务器上工作,但在本地主机上不。
RewriteRule ^demopage/([0-9]+)/?$ /anotherpage.php?id=$1 [QSA]
以上在本地主机上工作,但在我的骄傲服务器上不。
更多关于我的设置
生产服务器使用 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>
我的本地主机上的配置有很大不同,我没有设置特定于目录的规则,所以我很难确定这两种设置的不同之处。我对 mod_rewrites 还很陌生,这也无济于事。如果还有其他细节我忘记了,请询问,我会编辑问题。
【问题讨论】:
-
尝试删除 Multiviews 选项,这玩意文件扩展名。
-
我会在几分钟内尝试一下。谢谢你。不过很好奇,我还是新手,删除 Multiviews 可能会混淆网站的其他区域吗? @regilero
-
不删除
Multiviews不应该影响任何重写规则。 -
@regilero 如果您有时间,请发布答案,以便我接受。似乎成功了。
-
我完全同意,@regilero 需要将评论转换为答案。
标签: php apache .htaccess mod-rewrite