htaccess规则将子文件夹重写为GET变量

时间:2017-02-19 19:11:42

标签: php .htaccess redirect mod-rewrite

我对htaccess不是很有经验。今天我写一篇.htaccess来改写一个网址失败了。

我想要的: 我的项目托管在子域名上,例如sub.domain.com

我的htaccess应该管理:

  1. ngMock应该重定向到sub.domain.com(重定向301,明确了)
  2. 子文件夹应作为GET变量放置,例如www.domain.comsub.domain.com/test
  3. 子文件夹www.domain.com?var=test不应重定向
  4. 提前感谢您的提示!

1 个答案:

答案 0 :(得分: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添加到最后一行末尾的标志,用逗号分隔。