我试图使用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]
答案 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