使用 RewriteMap 减少重定向
Posted
技术标签:
【中文标题】使用 RewriteMap 减少重定向【英文标题】:Reduce redirects with RewriteMap 【发布时间】:2020-01-14 01:03:02 【问题描述】:我在一个文件中有一个 RewriteMap,并且想要处理(忽略)可选的尾随斜杠。我想尽量减少尾部斜杠案例中的重定向数量。如何更改 apache-config?
配置:
<VirtualHost *:80>
ServerName redirtest.localhost
RewriteEngine on
RewriteMap test "txt:/tmp/redirects.txt" #/old /new
RedirectMatch ^/(.*?)/$ /$1
RewriteCond %REQUEST_URI ^(.*)$
RewriteCond $test:%1|NOT_PRESENT !NOT_PRESENT [NC]
RewriteRule .? $test:%1 [NC,R=301]
结果(正常):
curl -sIL 'http://redirtest.localhost/old?key=val&somemore=foobar' |grep Location
Location: http://redirtest.localhost/new?key=val&somemore=foobar
以下工作,但我想避免中间重定向:
curl -sIL 'http://redirtest.localhost/old/?key=val&somemore=foobar' |grep Location
Location: http://redirtest.localhost/old?key=val&somemore=foobar
Location: http://redirtest.localhost/new?key=val&somemore=foobar
【问题讨论】:
【参考方案1】:试试这个:
RewriteMap test "txt:/tmp/redirects.txt"
RewriteCond %REQUEST_URI ^(.*\w)/?$
RewriteCond $test:%1|NOT_PRESENT !NOT_PRESENT [NC]
RewriteRule .? $test:%1 [NC,R=301]
RedirectMatch ^/(.*?)/$ /$1
【讨论】:
以上是关于使用 RewriteMap 减少重定向的主要内容,如果未能解决你的问题,请参考以下文章