我已经在这里工作了几个小时,但是无法让它发挥作用。我在这个.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/$1
RewriteCond %{HTTP_HOST} ^(www.)?hardfacetechnologies.com$
RewriteRule ^(/)?$ postle_hft/index_hft.php [L]
我已经厌倦了我能想到的所有排列,没有任何作用。我真的很感激一些帮助。
答案 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重定向由浏览器缓存,因此测试很麻烦。)