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


Only .php files loop with .htaccess redirect

我正在设置一个通配符子域指向子文件夹的系统。出于我之外的原因,这必须用。htaccess来完成。例如,要将http://subdomain.example.com重定向到example.com的public_html下的目录/子域/,以下部分可以工作(多亏了这个问题&A):

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

它适用于所有类型的文件,除了,如果他们有扩展名。php。例如,如果我在/子域/目录下放置一个sometext.txt文件,我可以在http://subdomain.example.com/sometext.txt上获得它,但如果我将文本文件的扩展名更改为.php,我将得到一个500错误,因为重定向循环。

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

我在一个共享主机上,所以我不能访问Apache配置

你能试试这样做对你有用吗?

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

所以不是localhost,而是直接添加实际的域名url。

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

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

我建议你放松一下,喝杯咖啡,然后休息一下。(有时这有帮助)

然后只关注重定向,

  • 排除Apache配置的问题
  • 你可以以后再担心301
  • 只能使用test.php,不能使用index.php

试着调试:

  • 关闭所有chrome浏览器选项卡。
  • 隐身打开,你要测试的url
  • 保持关闭隐身,以确保它总是完全刷新
  • 更改haccess文件,并始终打开一个新的隐身选项卡

正如我所怀疑的那样,问题是由托管提供商的配置引起的。.htaccess是可以的。我被告知这是最近在php-fpm和FastCgi的DirectAdmin中发现的问题。(他们的解决方案是在我的主目录中删除一个指向public_html的符号链接,并用一个空目录替换它。我一点也不知道!)

谢谢大家!