【发布时间】: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