2011-04-17 55 views
1

我试图使用htaccess重定向任何子域和一个域的根到另一个域。 例如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] 

回答

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

+0

他感谢的答案,但它确实没有如预期那么回事。原因是,我忽略了提及目录不是真实的。所以mysite.com/stuffhere不是一个实际的目录。我所做的一部分是短网址,所以这些目录实际上并不存在。经过大量的搜索后,我想出了如何完成我所需要的。我编辑了我的帖子,以显示我的工作。如果他们真的是目录,我相信你们会工作得很好。感谢那。 – 2011-04-20 06:46:24

+0

是的,这是正确的我的答案是基于实际目录的存在。真的很高兴你将它变成了一个可行的解决方案。 – anubhava 2011-04-21 03:10:50

相关问题