.htaccess RewriteRule删除?以下主机名

时间:2017-02-03 00:43:39

标签: .htaccess mod-rewrite url-rewriting

我有一个包含一些规则的htaccess文件,我现在想要添加另一个删除URL部分的规则

  

www.mydomain.com/?generations/anything

成为

  

www.mydomain.com/anything

(任何意味着任何其他字符)。我可以在没有?的情况下使其工作,但我似乎无法匹配/删除?我试过了:

1失败:

RewriteRule ^\?generations/(.*)$ /$1 [L]

2失败:

RewriteCond %{QUERY_STRING} ^generations/(.*)$
RewriteRule ^generations/(.*)$ $1 [L]

3失败:

RewriteCond %{QUERY_STRING} ^generations/(.*)$
RewriteRule ^([^?]*)?generations/(.*)$ $2%1 [L]

4失败:

RewriteRule ^([^?]*)?generations/(.*)$ $1$2 [QSA,L]

有人可以创建一个工作规则 - 并解释为什么我上面的第三次尝试不起作用?我可能会看到前两个问题,但第三个和第四个应该有效...

1 个答案:

答案 0 :(得分:1)

你到达那里3,但查询字符串不包含在RewriteRule匹配中。所以你只想匹配空字符串:

RewriteCond %{QUERY_STRING} ^generations/(.*)$
RewriteRule ^$ %1? [L]

但是,如果您希望/任何内容成为浏览器中访问的URL,那么您认为它也是错误的。你真的想要这个:

RewriteRule ^(.*)$ ?generations/$1 [L]