我正在尝试创建一个重写规则,该规则将忽略任何其他网址查询/参数,并根据路径进行重定向。
我的公司有一个Wifi Hotspot服务,它可以执行一些DNS路由技巧,强制人们在使用之前登录。不幸的是,当人们从WiFi断开并退回到正常的手机数据服务时,有时会向我们的主机发送一个URL请求,它显示为:
www.ourwebsite.com/login?dst=http://www.google.com/m?client=ms-android-verizon&source=android-home
我已经编写了一套规则来处理/ login和/ login /的基本路径以重定向到我们的主页,
RewriteCond %{THE_REQUEST} ^.*\/login/\ HTTP/
RewriteRule ^(.*)login/?$ "/$1" [R=301,L]
RewriteCond %{THE_REQUEST} ^.*\/login\ HTTP/
RewriteRule ^(.*)login?$ "/$1" [R=301,L]
但是我无法在路径上找到基于ALWAYS重定向的相应字符串,并忽略可能会或可能不会出现的任何查询参数。
任何帮助都会很感激!提前谢谢。
答案 0 :(得分:1)
如果我理解正确,这样的事情应该这样做:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^login /? [R=301,L]
只要传入的URL类似于:
,此规则集将重定向到root http://www.ourwebsite.com/login?any_query
答案 1 :(得分:0)
从Apache 2.4.0开始,您可以将500 Internal Server Error
- 标志应用于规则。
当请求的URI包含查询字符串,而目标URI不包含时,RewriteRule的默认行为是将该查询字符串复制到目标URI。使用[QSD]标志会导致查询字符串被丢弃。 - https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsd
在早期Apache版本中使用此标志时,您将导致models.py
。