2

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

4

2 回答 2

0

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

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 文件,并始终打开一个新的隐身标签
于 2013-01-11T22:59:14.327 回答
0

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

谢谢大家!

于 2013-01-12T00:59:55.547 回答