【问题标题】:Only .php files loop with .htaccess redirect只有 .php 文件循环使用 .htaccess 重定向
【发布时间】:2013-01-11 22:43:55
【问题描述】:

我正在设置一个带有指向子文件夹的通配符子域的系统。由于我以外的原因,这必须使用 .htaccess 来完成。例如,要将http://subdomain.example.com 重定向到example.com 的public_html 下的目录/subdomain/,以下部分 有效(感谢this Q&A):

RewriteEngine On
RewriteRule ^subdomain/ - [L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteRule ^(.*)$ /subdomain/$1 [L]

它适用于所有类型的文件除了,如果它们具有扩展名.php。例如,如果我将 sometext.txt 文件放在 /subdomain/ 目录中,我可以在 http://subdomain.example.com/sometext.txt 获取它,但如果我将文本文件的扩展名更改为 .php,由于重定向循环,我会收到 500 错误。

这让我觉得 PHP 模块尝试读取文件的方式有些奇怪。或者 Apache 和 PHP 之间的关系。我不熟悉这个;这就是我问的原因。

我在共享主机上,因此无法访问 Apache 配置。

【问题讨论】:

  • 还要注意:如果我浏览到example.com/subdomain/sometext.php,它可以工作。但是subdomain.example.com/sometext.php 循环。
  • php的内容是什么?没什么特别的吧?你能把它变成一个简单的 echo 'hello' 吗?
  • 可能最简单的方法就是启用RewriteLog 并查看发生了什么。
  • 这里有一个更新。 /subdomain/index.php 的存在影响了这件事,摆脱它表明所有 .php 文件都以下列方式重定向:subdomain.example.com/somefile.php -> "/subdomain/index.php /subdomain/somefile.php”(即 404)。所以有人将 / 重新映射到 /index.php 然后重写规则变得混乱......但这只会发生在 .php 请求中。
  • @fedmich php 的内容是“这是一些示例文本”,甚至不是

标签: php apache .htaccess redirect


【解决方案1】:

如果这样做对你有用,你可以试试吗?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.localhost$
RewriteRule ^(.*)$ http://localhost/subdomain/$1 [L]

因此,请尝试直接添加您的实际域 url,而不是 localhost。

我在我的本地主机上测试了这个,首先使用这样的 url,然后它们正确重定向

http://subdomain.localhost/test.txt
http://subdomain.localhost/test.php

我建议放松一下,喝杯咖啡,然后回来。 (有时这会有所帮助)

然后只关注重定向,

  • 排除他们的 Apache 配置问题
  • 您可以稍后再担心 301
  • 仅使用 test.php,不使用 index.php

在你的调试中试试这个:

  • 关闭所有其他 chrome 浏览器选项卡。
  • 隐身打开,你要测试的网址
  • 继续关闭隐身模式,确保它始终完全刷新
  • 更改 htacess 文件,并始终打开一个新的隐身标签

【讨论】:

  • 是的,正如我在对原始问题的第一条评论中指出的那样,但这不是解决方案,因为它是一个 302 重定向,它会蚕食 subdomain.example.com。
  • 你试过我的代码了吗?如果您注意到代码的第 2 行,RewriteRule ^subdomain/ - [L]
  • 实际上该行停止了循环。要么是那个,要么是 RewriteCond %{REQUEST_URI} !^/subdomain - 否则 everything 循环。
  • 先尝试不使用该行
【解决方案2】:

正如我所怀疑的,问题是由托管服务提供商的配置引起的。 .htaccess 很好。有人告诉我这是 DirectAdmin 中最近发现的一个问题,使用 php-fpm 和 FastCgi。 (解决方案是让他们在我的主目录中删除指向 public_html 的符号链接并将其替换为空目录。我对此一无所知!)

谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2017-10-10
    相关资源
    最近更新 更多