为什么我的mod_rewrite .htaccess重定向到另一个文件夹会出现404错误?

时间:2011-08-06 09:22:46

标签: .htaccess mod-rewrite dns directory add-on

如何将文件重定向到另一个文件夹中的另一个文件夹,该文件夹是另一个附加域的物理文件夹?

这是我服务器上的内容(由cPanel设置):

  addon_domain_1.com ---> public_html/folder_1
  addon_domain_2.com ---> public_html/folder_2

当addon_domain_1.com中有文件source.php的请求时,我想将其重定向到folder_2(而不是folder_1)中的target.php。所以它看起来像这样:

http://www.addon_domain_1.com/blah/source.php ---> folder_2/target.php

在我的public_html / .htaccess文件中,我有以下内容:

  Options +FollowSymlinks All -Indexes
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www\.addon_domain_1\.com$ [NC]
  RewriteRule /source\.php$ folder_2/target\.php [L]

但这会产生404错误:

  Not Found
  The requested URL /home/username/public_html/folder_2/target.php was not found on this server.

实际上,文件target.php确实存在于folder_2中,可以通过浏览器访问。

奇怪的是,当我将target.php复制到folder_1,并将我的规则更改为指向它时,它运行正常!

  RewriteRule /source\.php$ folder_1/target\.php [L]

因此,只有当我将其重定向到作为不同附加域的源的文件夹中的文件时,才会出现错误。

我怎样才能解决这个问题?

请注意,我无法使用外部重定向,因为它会丢失原始环境变量,例如我的脚本需要的REQUEST_URI和REMOTE_ADDR。

换句话说,以下规则对我不起作用:

  RewriteRule /source\.php$ http://www\.addon_domain_2.com/target\.php [P,L]

我知道你也可以在查询字符串中“附加”环境变量,但我宁愿不使用这个方法,让我的PHP脚本处理它。

谢谢。

0 个答案:

没有答案