.htaccess - 如果 url 包含某些参数,则使用 .htaccess 重定向站点
问题描述
如果 url 包含某个参数,我正在尝试使用 .htaccess 重定向我的网站。
例如,当我的站点包含 时?lang=de
,我希望将站点永久重定向到https://www.example.com/de/
这是我尝试过的:
# BEGIN Redirects for mobile params
RewriteEngine On
RewriteCond %{REQUEST_URI} lang=de
RewriteRule .* https://www.example.com/de/
# END Redirects for mobile params
任何帮助将不胜感激,谢谢
更新:这是我现在正在尝试的,但我得到:
# BEGIN Redirects for mobile params
RewriteEngine on
# if the query string contains a parameter called "lang"
RewriteCond %{QUERY_STRING} (?:^|&)lang=de
# then redirect (permanently) to /
RewriteRule ^ https://www.example.com/de/ [L,R=permanent]
# END Redirects for mobile params
但这会导致 ERR_TOO_MANY_REDIRECTS
更新:我发现当它把它放在我的 .htaccess 末尾时,它就开始工作了。
解决方案
我发现当它把它放在我的末尾时
.htaccess
,它就开始工作了。
这可能是由于早期的指令阻止了重定向循环(换句话说,存在冲突)。理想情况下,此重定向应位于.htaccess
文件开头附近。
但是,您仍应从重定向响应中丢弃查询字符串。就目前而言,您的重定向/de/
仍将包含lang=de
URL 参数。Apache 2.4 上的QSD
标志将执行此操作。例如:
RewriteCond %{QUERY_STRING} (?:^|&)lang=(de)
RewriteRule !de/ /%1/ [QSD,R=permanent,L]
%1
反向引用包含在查询字符串中捕获的“de” 。
推荐阅读
- typescript - 打字稿,不要使用泛型丢失类型信息
- reporting-services - SSRS 电子邮件仅发送给具有浏览器权限的用户
- java - 确保在 Cucumber 步骤定义中关闭 Autocloseable
- excel - Excel JS api - 监听工作表重命名
- python - 在python中创建一个聚合列
- javascript - 尝试清除 100 条或更多消息时出错
- php - 如何在 Laravel Excel 的导出中设置行高?
- ncurses - 从哪里可以获得 ncurses wgetch 源代码?
- python - 如何将事件参数调用到另一个函数
- javascript - scrollIntoView 未在触摸事件侦听器中执行