301重定向链接以使用.html后缀

时间:2014-11-10 22:36:44

标签: .htaccess mod-rewrite redirect url-rewriting http-status-code-301

我想知道如何301重定向所有格式的网址

/search/(.*)

(其中(.*)未被.html终止)

/search/$1.html

主要是我不太确定如何匹配最终没有.html的网址结构,这是我的问题。

由于

1 个答案:

答案 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重定向,则可能还会被缓存,这也会影响结果。