2017-02-19 113 views
3

我不是很有经验的htaccess的。今天我没有写一个.htaccess来重写url。htaccess的规则重写子文件夹到一个GET变量

我想要什么: 我的项目是区域上的托管例如sub.domain.com

我的htaccess应该管理:

  1. sub.domain.com应该重定向到www.domain.com(重定向301,这是明确的)
  2. 子应该放在为GET变量如sub.domain.com/testwww.domain.com?var=test
  3. 子文件夹/admin不应事先被重定向

感谢的提示!

回答

2

这应该为你做它:

RewriteEngine on 
RewriteCond %{HTTP_HOST} =sub.example.com 
# Following condition added to support changed requirement, see comments 
RewriteCond %{QUERY_STRING} !(?:^|&)var= 
RewriteCond %{REQUEST_URI} !^/admin/ 
RewriteRule ^(.*)$ http://www.example.com/?var=$1 [R=301,L] 

这将下降,这是在原请求的任何查询字符串。如果您想保留任何查询字符串,并加上“VAR = ...”给它,然后在最后一行的末尾,用逗号隔开添加QSA的标志。

+0

谢谢@SuperDuperApps 最后重定向工作,但有一件事:看起来请求重定向多次,并且url看起来像sub.example.com/?var=&var=&var=&var=&var=&var =&var =&var =&var =&var =东西 –

+0

不客气Stefan。请考虑acceptng我与它的左上角蜱答案,所以这个问题显示了回答,我得到了一点代表的:)欢迎堆栈溢出:) – SuperDuperApps

+0

有一件事如上所述。 RewriteEngine RewriteCond%{HTTP_HOST} = sub.domain.com RewriteCond%{REQUEST_URI}!^/admin/ RewriteRule^$ \ /(。*)$?e = $ 1 [QSA,R = 301,L] 会导致类似于: /?e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e =&e = &E = VAL 似乎页面重定向多次......(对不起,打扰你吧:)) –