【问题标题】:mod_rewrite rule works on localhost but not on production server, due to presence of file extension由于存在文件扩展名,mod_rewrite 规则适用于 localhost 但不适用于生产服务器
【发布时间】: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


【解决方案1】:

尝试删除Multiviews选项,这玩意文件扩展名。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    相关资源
    最近更新 更多