Mod rewrite 将一个文件重定向到另一个域上的文件
Mod rewrite redirect one file to a file on another domain
我已经处理了好几个小时了,但无法正常工作。我在这个 .htaccess 文件中还有其他有效的重定向。
我需要重定向如下。
mydomain.com/dir/subdir/myfile.php
到 myotherdomain.com/dir/my_index.php
注意mydomain.com
和myotherdomain.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/
RewriteCond %{HTTP_HOST} ^(www.)?hardfacetechnologies.com$
RewriteRule ^(/)?$ postle_hft/index_hft.php [L]
我已经厌倦了我能想到的所有排列,但没有任何效果。非常感谢您的帮助。
在文档根目录的 .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重定向被浏览器缓存,测试起来很麻烦。)
您可以在/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]
应该也可以工作,因为两个域都指向同一个站点根目录。
我已经处理了好几个小时了,但无法正常工作。我在这个 .htaccess 文件中还有其他有效的重定向。
我需要重定向如下。
mydomain.com/dir/subdir/myfile.php
到 myotherdomain.com/dir/my_index.php
注意mydomain.com
和myotherdomain.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/
RewriteCond %{HTTP_HOST} ^(www.)?hardfacetechnologies.com$
RewriteRule ^(/)?$ postle_hft/index_hft.php [L]
我已经厌倦了我能想到的所有排列,但没有任何效果。非常感谢您的帮助。
在文档根目录的 .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重定向被浏览器缓存,测试起来很麻烦。)
您可以在/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]
应该也可以工作,因为两个域都指向同一个站点根目录。