Apache htaccess问题:从URL查询中删除1(!)参数
我的URL看起来像 page.html?L=0&a=1&b=2&c=6或 page.html?a=1&b=2&L=0&c=6或 html?a=1&b=2&c=6&L=0 我需要删除L=0,其中L可以是0或1。但我需要保留所有其他参数。如何做到这一点?试试这个规则:Apache htaccess问题:从URL查询中删除1(!)参数,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我的URL看起来像 page.html?L=0&a=1&b=2&c=6或 page.html?a=1&b=2&L=0&c=6或 html?a=1&b=2&c=6&L=0 我需要删除L=0,其中L可以是0或1。但我需要保留所有其他参数。如何做到这一点?试试这个规则: RewriteCond %{QUERY_STRING} ^(([^&]*&+)*)L=[01](&+(.*))?$ RewriteRule ^page\.html$ %{REQUEST_URI}?%1%4 [L
RewriteCond %{QUERY_STRING} ^(([^&]*&+)*)L=[01](&+(.*))?$
RewriteRule ^page\.html$ %{REQUEST_URI}?%1%4 [L,R=301]
好的,我经常在网上玩 我根本找不到适用于所有这些情况的正则表达式: domain.com/login.html?p1=1&p2=2&L=0&P3=3 domain.com/login.html?p1=1&p2=2&L=1&P3=3 domain.com/login.html?p1=1&p2=2&L=0 domain.com/login.html?&L=0 domain.com/login.html?L=0 domain.com/login.html?L=0&p1=1&p2=2&P3=3 最后一个最佳猜测是(。)(L=[a-zA-Z0-9]&?(&?)>>>1美元3美元4美元 这导致了 domain.com/login.html?p1=1&p2=2&P3=3 domain.com/login.html?p1=1&p2=2&P3=3 domain.com/login.html?p1=1&p2=2& domain.com/login.html& domain.com/login.html? domain.com/login.html?p1=1&p2=2&P3=3 我尝试的是: -如果中间是L,则删去 -如果L参数位于一个单独的参数字符串的末尾,则将其切断 -切断L参数,如果它是唯一的参数,则断开“?”
你能再给我一些提示吗?好了,又是一个头疼的问题,我终于到了。我只是把这个贴在这里以防万一
- 错过了什么
- 也许这可以帮助其他处于类似情况的人
- domain.com/login.html?p1=1&p2=2&L=abc&P3=3
- domain.com/login.html?p1=1&p2=2&L=def
- domain.com/login.html?&L=eh1
- domain.com/login.html?&L=asdfasd&p1=1&p2=2
- domain.com/login.html?L=0
- domain.com/login.html?L=1&p1=1&p2=2&P3=3
%{REQUEST_URI}?%1%3
。这将切断具有不同L参数选项的第二个()组
最终结果
URL查询字符串将从L参数中删除,但保留所有其他内容
有什么评论吗?如果这对你也有价值,请随意投票
感谢所有帮助我找到正确解决方案的人 “page.html”可以是任何东西。。。我可以把(.*)放进去吗?我在很多例子中都把它看作是终极通配符……你可以使用。*通配符,但我怀疑当你说它可以包含“任何东西”时,你并不是真正的意思。你越具体越好。[a-zA-Z0-9-]+将相当普遍,或者可能[^./]+Hm。。。我有点不习惯使用那个代码,因为我不完全理解它。你能解释一下吗,这样我也能学到一些东西?@Czar:
(([^&]*&+*)
将匹配L=0
或L=1
的键/值对前面的任何键和值对(因为L=[01]
)<代码>(&+(.*)?将匹配任何以至少一个&
开头的内容。这是为了只获取整个L
值,而不仅仅是值stat,只需从0
或1
开始即可。因此,如果RewriteRule
中的模式与当前URI路径匹配,而没有上下文前缀,RewriteCond
中的模式与URI查询匹配,%1
(RewriteCond中第一组的匹配)包含前面的所有内容,%3
(RewriteCond中第三组的匹配)L
参数后的所有内容。嗯。。。好啊2件事:1。我刚检查过,“L”参数几乎可以是任何东西,从数字到字符再到任意组合。2.代码显示为%1%4。根据你的解释,这不应该是%1%3吗?
# Rewrite Typo3 links with multilanguage Param "L"
RewriteCond %{QUERY_STRING} (.*)(^L=[a-zA-Z0-9]+&?|^&L=[a-zA-Z0-9]+&|&L=[a-zA-Z0-9]+)(&?.*)
RewriteRule (.*) %{REQUEST_URI}?%1%3 [L,R=301]