【问题标题】:RewriteRule messes with subdomainRewriteRule 与子域混淆
【发布时间】:2014-08-15 05:29:10
【问题描述】:

我有一个名为login 的子域,该文件夹中有一个文件index.php(该文件夹位于我的文档根目录中)。 .htaccess 文件也在文档根目录中,其内容如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
ErrorDocument 404 http://www.example.com/error
ErrorDocument 403 http://www.example.com/error
ErrorDocument 500 http://www.example.com/error

当我转到http://login.example.com/ 时,我最终进入了前面提到的错误页面。但是,如果我导航到 http://login.example.com/index.php 一切正常。我对 RegEX 不是很熟悉,但我确实怀疑这是因为我的 .htaccess 文件,它应该只删除 URL 末尾的 .php

非常感谢任何帮助!

编辑:我通过在文件夹login 中添加一个.htaccess 文件解决了这个问题:

RewriteEngine Off
DirectoryIndex index.php

感谢大家的帮助! :-)

【问题讨论】:

  • 可能你需要DocumentRoot index.php
  • @RahilWazir 不应该是 apache 的默认设置吗?因为如果我转到http://www.example.com/ 它工作得很好,它只显示我的 index.php 而不在 URL 中指定它。
  • 是 Apache 的默认设置,它也适用于 http://www.example.com/ 主域,但可能不适用于您的子域。
  • @RahilWazir 那么为什么.htacces ModRewrite 和 ErrorDocuments 会在子域中获取?我愿意尝试一下,但我非常怀疑它会带来改变。
  • 因为条件RewriteCond %{REQUEST_FILENAME} !-f 失败或RewriteRule 未能匹配任何请求uri。

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

我觉得你的规则很好。

另一方面,您可能需要在 .htaccess 文件夹中的 login 文件中使用它:

DirectoryIndex index.php

我猜你会得到一个404http://login.example.com/,因为它正在寻找一个不存在的默认index.html。需要告知 Apache 使用 index.php 作为该文件夹的索引文件。

【讨论】:

  • 我在login 文件夹中添加了一个.htaccess 文件,其中包含DirectoryIndex index.php,但它仍然不起作用!我还在login 文件夹中添加了一个index.html 文件,但是当我转到http://login.example.com/ 时,现在它给了我一个500 错误。我能否以某种方式从文档根目录中的默认 .htaccess 文件中排除 login 文件夹?
猜你喜欢
  • 1970-01-01
  • 2021-10-10
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
相关资源
最近更新 更多