Mod重写将一个文件重定向到另一个域上的文件

时间:2015-08-31 21:25:03

标签: .htaccess rewrite

我已经在这里工作了几个小时,但是无法让它发挥作用。我在这个.htaccess文件中有其他重定向功能。

我需要重定向如下。

mydomain.com/dir/subdir/myfile.phpmyotherdomain.com/dir/my_index.php

请注意,mydomain.commyotherdomain.com都指向相同的根目录。

这是我的代码。

RewriteCond %{HTTP_HOST} ^(www.)?postle.com$
RewriteCond %{REQUEST_URI} !^/pi_www/hardface/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pi_www/hardface/$1
RewriteCond %{HTTP_HOST} ^(www.)?hardfacetechnologies.com$
RewriteRule ^(/)?$ postle_hft/index_hft.php [L]

我已经厌倦了我能想到的所有排列,没有任何作用。我真的很感激一些帮助。

2 个答案:

答案 0 :(得分:2)

您可以在 /dir/subdir/.htaccess

中使用此规则
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule ^myfile\.php$ http://myotherdomain.com/dir/my_index.php [R=302,NC,L]

如果您想避免外部重定向:

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule ^myfile\.php$ /dir/my_index.php [NC,L]

也应该有效,因为两个域都指向同一个站点根目录。

答案 1 :(得分:1)

在文档根目录的.htaccess文件中,尝试:

RewriteCond %{HTTP_HOST} =mydomain.com
RewriteRule ^dir/subdir/myfile\.php$ http://myotherdomain.com/dir/my_index.php [R=302,L]

指令的顺序很重要。这应该在您的规范www重定向之后,但在任何内部重写之前,以及任何可能发生冲突的重定向之前。

这也假定您的规范URL是裸域(即不是www子域) - 就像您的问题中的示例一样。要匹配裸域 www子域(并使其不区分大小写),请将RewriteCond指令更改为:

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain.com$ [NC]

当您确定临时(302)重定向工作正常时,将其更改为永久(301)。 (301重定向由浏览器缓存,因此测试很麻烦。)