只有.php文件循环使用.htaccess重定向

时间:2013-01-11 22:43:56

标签: php apache .htaccess redirect

我正在设置一个带有指向子文件夹的通配符子域的系统。出于我之外的原因,必须使用.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。例如,如果我在/ subdomain /目录中删除sometext.txt文件,我可以在http://subdomain.example.com/sometext.txt获取它,但是如果我将文本文件的扩展名更改为.php,由于重定向循环,我得到500错误

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

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

2 个答案:

答案 0 :(得分:0)

你能尝试这样做吗?

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

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

我在我的localhost上测试了这个,首先是这样的网址,然后他们正确地重定向

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

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

然后只关注重定向,

  • 排除他们的Apache配置问题
  • 你可以担心301以后
  • 仅使用test.php,没有index.php

尝试调试:

  • 关闭所有其他Chrome浏览器标签。
  • 以隐身方式打开,您要测试的网址
  • 保持关闭隐身,以便始终确保完全刷新
  • 更改htacess文件,并始终打开新的隐身标签

答案 1 :(得分:0)

我怀疑,问题是由托管服务提供商的配置引起的。 .htaccess很好。我被告知这是DirectAdmin最近发现的一个问题,有php-fpm和FastCgi。 (解决方案是让他们在我的主目录中删除一个符号链接到public_html并用空目录替换它。我不知道更多关于这个!)

感谢所有人!