Php htaccess将子文件夹重写为GET变量的规则
我对htaccess不是很有经验。今天我写一个.htaccess重写url失败了 我想要的是: 我的项目托管在子域上,例如sub.domain.com 我的htaccess应该管理:Php htaccess将子文件夹重写为GET变量的规则,php,.htaccess,redirect,mod-rewrite,Php,.htaccess,Redirect,Mod Rewrite,我对htaccess不是很有经验。今天我写一个.htaccess重写url失败了 我想要的是: 我的项目托管在子域上,例如sub.domain.com 我的htaccess应该管理: sub.domain.com应该重定向到www.domain.com(很清楚,重定向301) 子文件夹应作为GET变量放置,例如sub.domain.com/test到www.domain.com?var=test 不应重定向子文件夹/admin 提前谢谢你的提示 这应该能帮到你: RewriteEngine on
sub.domain.com
应该重定向到www.domain.com
(很清楚,重定向301)sub.domain.com/test
到www.domain.com?var=test
/admin
提前谢谢你的提示 这应该能帮到你:
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
添加到最后一行末尾的标志中,并用逗号分隔。谢谢@SuperDuperApps在重定向工作结束时,但是有一件事:请求似乎多次重定向,url看起来像sub.example.com/?var=&var=&var=&var=&var=&var=&var=&var=&var=&var=&var=&var=&var=something欢迎您Stefan。请考虑接受我的答案,用它左上角的记号来回答问题,我回答了一个问题:“欢迎到堆栈溢出:”有一件事如上所述。RewriteCond%{HTTP_HOST}=sub.domain.com RewriteCond%{REQUEST_URI}上的RewriteEngine^/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=val页面似乎重定向了多次。。。(很抱歉打扰您:))您更改了规则,您说应该从sub重定向到www,然后删除了该规则。我添加了一个条件来检查查询字符串中的var,这将阻止循环。您还更改了规则匹配,我看不出它如何能够匹配任何内容。