htaccess重写和特殊字符'&'

asp

我正在尝试从旧网站到新网站的一些非常简单的重定向。但是我使用字符“&”进行的所有重定向均不起作用。

举个例子:

    RewriteRule ^-Nos-equipes-$ /-Associes-Collaborateurs-?lang=fr [R=301,L]

工作正常,但是:

    RewriteRule ^-Contact-?&lang=en$ /-Nous-contacter-?lang=en [R=301,L]

不要工作

我确信它很容易,但是我仍然找不到使它正常工作的方法。我有尝试标志[NE]或写[&] ...

谢谢。头盖

编辑:

我现在使用可以工作的解决方案anubhava;但这并非总会导致我的问题更加复杂;实际上,我使用了一些带有param的网址:

 ?&lang=en, ?&lang=fr, and ?lang=en 

所以我有这样的其他查询字符串:

# Redirection from the old site #--------------------------------------
    RewriteCond %{QUERY_STRING} (^|&)lang=fr(&|$)
    RewriteCond %{QUERY_STRING} (^|&)lang=en(&|$)
    RewriteCond %{QUERY_STRING} ^lang=en(&|$)

这项工作仍然很棒;除了2种情况外:第一种:尝试进行这种重定向(保留在相同的URL上,但只需修改参数)

    RewriteRule ^the_url?&lang=en$ /the_url?lang=en [R=301]

谁犯了重定向错误。

第二种情况,当我不得不重写相同的URL但具有不同的参数时:

    RewriteRule ^the_url$ /other_url?lang=fr [R=301]
    RewriteRule ^the_url?&lang=en$ /other_url?lang=en [R=301]
    RewriteRule ^the_url?&lang=fr$ /other_url?lang=fr [R=301,L]

它有效,但仅适用于第一个指示。(我不放标志L,因为我得到了一长串的重写;我认为我可以将条件放在开头,而不是每次都重写它们)

:::::::::::::::::::::::

我正在尝试重定向导致麻烦的真实网址的示例

    www.mywebsite/-Avocats-a-la-Cour- to--> www.mywebsite/?lang=fr 
    www.mywebsite/-Avocats-a-la-Cour-?&lang=en to--> www.mywebsite/?lang=en 

    www.mywebsite/Marque-francaise?&lang=fr to--> www.mywebsite//Marque-francaise?lang=fr
    www.mywebsite/French-Trademarks?&lang=en to--> www.mywebsite//French-Trademarks?lang=en

    www.mywebsite/-Contact-?&lang=en to--> www.mywebsite/-Nous-contacter-?lang=en
    www.mywebsite/-Contact-?&lang=fr to--> www.mywebsite/-Nous-contacter-?lang=fr

    www.mywebsite/person-780?lang=en to--> www.mywebsite/personel?lang=en
阿努巴瓦

您无法QUERY_STRING在中匹配RewriteRule您可以使用:

RewriteCond %{QUERY_STRING} (^|&)lang=en(&|$)
RewriteRule ^-?Contact-?$ /-Nous-contacter- [R=302,NC,L]

QUERY_STRING 会自动结转到目标URI。


编辑:根据您编辑的问题,您可以具有以下规则:

# www.mywebsite/-Avocats-a-la-Cour- to--> www.mywebsite/?lang=fr 
RewriteCond %{THE_REQUEST} \s/+(-Avocats-a-la-Cour-)\s [NC]
RewriteRule ^ /?lang=fr [R=302,L,NE]

# www.mywebsite/-Avocats-a-la-Cour-?&lang=en to--> www.mywebsite/?lang=en 
RewriteCond %{THE_REQUEST} \s/+(-Avocats-a-la-Cour-)\?&?(lang=en)\s [NC]
RewriteRule ^ /?%2 [R=302,L,NE]

# www.mywebsite/Marque-francaise?&lang=fr to--> www.mywebsite/Marque-francaise?lang=fr
# www.mywebsite/French-Trademarks?&lang=en to--> www.mywebsite/French-Trademarks?lang=en
RewriteCond %{THE_REQUEST} \s/+(Marque-francaise|French-Trademarks)\?&(lang=(?:en|fr))\s [NC]
RewriteRule ^ /%1?%2 [R=302,L,NE]

# www.mywebsite/-Contact-?&lang=en to--> www.mywebsite/-Nous-contacter-?lang=en
# www.mywebsite/-Contact-?&lang=fr to--> www.mywebsite/-Nous-contacter-?lang=fr
RewriteCond %{THE_REQUEST} \s/+(-Contact-)\?&?(lang=(?:en|fr))\s [NC]
RewriteRule ^ /-Nous-contacter-?%2 [R=302,L,NE]

# www.mywebsite/person-780?lang=en to--> www.mywebsite/personel?lang=en
RewriteCond %{THE_REQUEST} \s/+(person-780)\?&?(lang=(?:en|fr))\s [NC]
RewriteRule ^ /personel?%2 [R=302,L,NE]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章