Apache Rewrite如何检测查询参数为空或未携带?
Apache Rewrite 重定向规则实现方案
首先确认你的Apache环境已经开启mod_rewrite模块,以下规则可以直接写入站点根目录的.htaccess文件,或者对应虚拟主机的配置段中:
RewriteEngine On # 匹配请求域名是www.myhost.com RewriteCond %{HTTP_HOST} ^www\.myhost\.com$ [NC] # 匹配请求路径为/my-page.html RewriteCond %{REQUEST_URI} ^/my-page\.html$ [NC] # 匹配查询参数为空,或者仅存在空值year参数 RewriteCond %{QUERY_STRING} ^(year=)?$ [NC] # 执行重定向,丢弃原有查询参数 RewriteRule ^(.*)$ https://www.my-2nd-host.com/current-year/$1 [R=301,L,QSD]
参数说明
[NC]:匹配路径、域名、参数时不区分大小写[QSD]:丢弃原请求的查询参数,不会把year=带到目标URL上。如果你使用的Apache版本低于2.4不支持该标记,可以把目标URL末尾加?实现相同效果,规则改写为:RewriteRule ^(.*)$ https://www.my-2nd-host.com/current-year/$1? [R=301,L]R=301:使用永久重定向,若仅做临时测试可以改为R=302避免浏览器缓存旧规则[L]:匹配到该规则后终止后续其他重写规则的执行
如果需要适配该域名下所有的.html页面,而非仅my-page.html,可以把路径匹配的规则修改为:
RewriteCond %{REQUEST_URI} ^/.*\.html$ [NC]
内容的提问来源于stack exchange,提问作者mrjayviper
相关产品推荐
相关产品推荐

