Regex mod_重写规则从URL中删除m=1的字符串,而不管其位置如何?
如何创建可以更改此设置的mod_重写规则:Regex mod_重写规则从URL中删除m=1的字符串,而不管其位置如何?,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,如何创建可以更改此设置的mod_重写规则: exampledomain/blog/2013/10/?view=flipcard&m=1&\u转义\u片段 为此: exampledomain/blog/2013/10/ 这是: exampledomain/blog/review of items/?view=timeslide&m=1 为此: exampledomain/blog/review of items/ 基本上是检查最后一个字符串内部是否有m=1,并且只删除最后一个字符串,而不考虑之前的
exampledomain/blog/2013/10/?view=flipcard&m=1&\u转义\u片段
为此:
exampledomain/blog/2013/10/
这是:
exampledomain/blog/review of items/?view=timeslide&m=1
为此:
exampledomain/blog/review of items/
基本上是检查最后一个字符串内部是否有m=1
,并且只删除最后一个字符串,而不考虑之前的斜杠数
请注意,我们并不是像在其他一些问题中那样删除m=1,我们希望去掉整个字符串,即。
?view=flipcard&m=1&\u转义\u片段
或
?view=timeslide&m=1
您可以在文档的根目录中使用此代码。htaccess
文件:
RewriteEngine On
RewriteCond %{QUERY_STRING} (^|&)m=1(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}? [L,R=302]
(^ |&)m=1(&|$)
regex用于确保查询字符串中的任何位置都匹配了m=1
。感谢您提供了令人难以置信的速度!这是我关于stackoverflow的第一个问题,我完全被震惊了!我是否可以跟进并询问规则中的哪个元素/部分实际删除了字符串?那么,最初是如何规定的呢?我很难看穿重写代码,因为我是新手,找不到一个可以轻松分解代码的资源。谢谢RewriteCond%{QUERY|u STRING}(^&)m=1(&&$)[NC]
在查询字符串中匹配m=1
。每个查询参数的前面或后面都可以是&
,这就是为什么使用(^ |&)m=1(&|$)
正则表达式的原因。然后目标URI中的%{REQUEST\u URI}?
正在剥离所有查询字符串。您能更具体一点吗?如果“m=1”是url的一部分,则要删除从“?”开始的所有内容并保留其余内容?