我正在设置一个带有指向子文件夹的通配符子域的系统。出于我之外的原因,必须使用.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配置。
答案 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
我建议放松一下,喝咖啡然后回来吧。 (有时这有帮助)
然后只关注重定向,
尝试调试:
答案 1 :(得分:0)
我怀疑,问题是由托管服务提供商的配置引起的。 .htaccess很好。我被告知这是DirectAdmin最近发现的一个问题,有php-fpm和FastCgi。 (解决方案是让他们在我的主目录中删除一个符号链接到public_html并用空目录替换它。我不知道更多关于这个!)
感谢所有人!