我想知道如何301重定向所有格式的网址
/search/(.*)
(其中(.*)
未被.html终止)
到
/search/$1.html
主要是我不太确定如何匹配最终没有.html的网址结构,这是我的问题。
由于
答案 0 :(得分:1)
您可以使用%{REQUEST_URI}
作为与其进行负面匹配的条件,如下所示:
RewriteCond %{REQUEST_URI} !^/search/([^.]+)\.html$ [NC]
RewriteRule ^search/(.*)$ /search/$1.html [R=302,NC,L]
我在上面的示例中使用了302
,很简单,因为在测试时我总是使用302来确保它的工作,所以我不会被缓存,一旦你确认它的工作,你就可以安全地将其切换为[R=301,NC,L]
。
换句话说,如果网址不是search/something.html
,则会重定向到其结尾为.html
的版本。
注意:请注意,放置此规则的顺序以及系统/ CMS(如果有)可能会影响您获得的结果。如果您以前尝试过301重定向,则可能还会被缓存,这也会影响结果。