【发布时间】:2020-11-02 19:35:54
【问题描述】:
我希望对位于 www.mysite.com/nouveauSite/shop.html 的页面的每次访问都重定向到同一个 URL,并将 locale=fr 添加到查询字符串中。
我可以看到 3 种类型的请求:
- 没有查询字符串的 URL:
/nouveauSite/shop.html应重写为/nouveauSite/shop.html?locale=fr - 带有查询字符串但没有
locale参数的网址:/nouveauSite/shop.html?foo=3应重写为/nouveauSite/shop.html?locale=fr?foo=3 - 查询字符串包含
locale参数设置为fr以外的其他内容的URL:/nouveauSite/shop.html?foo=3&locale=en应重写为/nouveauSite/shop.html?locale=fr&foo=3
现在我只有 2 号工作。 我正在使用这个规则:
RewriteCond %{QUERY_STRING} !locale=
RewriteRule ^shop.html /nouveauSite/shop.html?locale=fr [R,L,QSA]
我想到了这条规则:
RewriteCond %{REQUEST_URI} ^/nouveauSite/shop.html
RewriteRule ^shop.html /nouveauSite/shop.html?locale=fr [R,L]
将修复数字 1,但它似乎不起作用。
我不知道3号该怎么办。
【问题讨论】:
-
澄清一下,您的
.htaccess文件似乎位于/nouveauSite子目录中?/shop.html?locale=fr?foo=3- 我猜你的意思是/shop.html?locale=fr&foo=3?您的第一条规则应该对#1 和#2 “有效”,因为它们实际上是一回事,即。没有locale参数。只有 #3 是一种特殊情况,但取决于您的应用程序如何读取“重复”参数,那么所有 3 个都可以由单个规则处理。你的.htaccess文件中还有其他指令吗?您如何阅读这些 URL 参数?
标签: regex apache .htaccess mod-rewrite