我的网址看起来像
page.html?L = 0& a = 1& b = 2& c = 6 OR page.html?a = 1& b = 2& L = 0& c = 6 OR ?page.html中一个= 1和b = 2和C = 6&安培; L = 0 我需要删除L = 0,其中L可以是0或1.但我需要保留所有其他参数。怎么办呢?
答案 0 :(得分:0)
尝试此规则:
RewriteCond %{QUERY_STRING} ^(([^&]*&+)*)L=[01](&+(.*))?$
RewriteRule ^page\.html$ %{REQUEST_URI}?%1%4 [L,R=301]
答案 1 :(得分:0)
好的,我在http://gskinner.com/RegExr/上玩了很多。
我根本无法找到适用于所有这些情况的正则表达式:
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 param位于一个孤独的param字符串的末尾,则将其剪掉 - 切断L param和“?”如果它是唯一的参数
你能提供更多提示吗?
答案 2 :(得分:0)
好的,另一个头痛,我终于到了。我只是发布这个以防万一
# 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]
该规则试图涵盖以下所有案例
据我所知,正则表达式如下:
因此,替换只需要%{REQUEST_URI}?%1%3
。这将删除具有不同L-param选项的第二个()组。
URL查询字符串将被剥离L-param,但保留其他所有内容。
有何评论?如果这对你有价值,请随意投票。
感谢所有帮助我找到正确解决方案的人!