使用.htaccess,如何根据当前的GET变量在重定向上附加GET变量?

时间:2014-06-26 17:02:14

标签: .htaccess redirect

我使用.htaccess将网站管理页面重定向到全局管理页面,我想要做的是将引荐网站附加到URL的末尾,其中可能包含已经是查询字符串。我不知道从哪里开始,但还没找到任何有正确信息的东西。

我想做的是以下列方式重定向网址:

site2.com/admin/        => site1.com/admin/?ref=site2
site3.com/admin/?page=1 => site1.com/admin/?page=1&ref=site3

是否有人知道我可以将ref=site#附加到网址的方式,并根据网址是否有查询使用正确的字符?

提前感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:0)

将此代码放入DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteCond %{QUERY_STRING} !(^|&)ref=site1 [NC]
RewriteRule ^ %{REQUEST_URI}?ref=site1 [R=302,L,QSA,NE]

答案 1 :(得分:0)

尝试:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^(www\.)?site1\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.com$ [NC]
RewriteRule ^admin/$ http://site1.com/admin/?ref=%1 [L,QSA]

答案 2 :(得分:0)

我能够通过更多搜索找到如何执行此操作,这使我直接进入Httpd Wiki Rewrite Query String页面以获得答案。我怎么想念那个?我很欣赏我收到的答案,但没有一个完全符合我的要求。答案也非常简单。对于其他感兴趣的人:

RewriteRule ^admin(/.*)?$    http://ADMIN_SITE/admin$1?ref=REF_SITE    [L,NC,QSA,R=301]

QSA标志将在?ref查询后自动添加查询字符串。