htaccess从任何子域重定向到另一个域,从目录重定向到查询URL

时间:2011-04-17 15:48:50

标签: .htaccess mod-rewrite redirect

我试图使用htaccess将任何子域和一个域的根重定向到另一个域。 示例

anysub.mysite.com或mysite.com重定向到www.anotheriste.com

还有mysite.com/stuffhere到www.anothersite.com/feed?v=stuffhere

因此,任何不是子目录的内容都会被重定向到另一个域,并且任何子目录都会被重定向到带有查询字符串的URL。似乎无法得到它。一个重写规则会覆盖另一个。

编辑: 这就是我的工作

Options +FollowSymlinks 
RewriteEngine on
RewriteRule ^$ http://www.site.com [R=301,L]

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteCond  %{REQUEST_URI} ^/*\/?
RewriteRule ^(.*)$ http://www.site.com/feed?v=$1 [R=301,L]

1 个答案:

答案 0 :(得分:2)

尝试将这些规则放在.htacccess文件中:

RewriteEngine on
Options +FollowSymlinks -MultiViews

# handles http redirect sub-dir
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ http://www.anotheriste.com/feed?v=$1 [R=301,L,QSA,NE]

# handles http redirect non sub-dir
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ http://www.anotheriste.com/$1 [R=301,L,QSA,NE]

# handles https redirect sub-dir
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ https://www.anotheriste.com/feed?v=$1 [R=301,L,QSA,NE]

# handles https redirect non sub-dir
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC] 
RewriteRule ^/?(.*)$ https://www.anotheriste.com/$1 [R=301,L,QSA,NE]

R = 301将重定向,其状态为https状态301

L将制作最后一条规则

NE不用于转义查询字符串

QSA将附加您现有的查询参数

$ 1是你的REQUEST_URI