将url重写为url而不使用html结尾(.html)

时间:2017-05-19 15:22:44

标签: .htaccess mod-rewrite url-rewriting

我想将没有.html的所有网址重定向(301)到.html。 示例:

  

example.com/site应重定向到example.com/site.html

我尝试了以下内容:

RewriteRule (.+)$ /$1.html [L,R=301]

1 个答案:

答案 0 :(得分:1)

您的规则可能会导致重定向循环,因为即使已经重定向,它也会重写URL。

在您的模式中,您需要确保网址不会以.html结尾。

您可以使用否定模式来实现此目的:

RewriteRule !\.html$ %{REQUEST_URI}.html [L,R=301]

或者,如果您不想将此应用于空路径(例如在您的示例中)或需要重复使用模式的匹配项,则可以使用RewriteCondition

RewriteCond %{REQUEST_URI} !\.html$
RewriteRule (.+)$ $1.html [L,R=301]

请注意,这是一个非常简单的示例,仅适用于您描述的确切情况。这也会将以.htm结尾的网址重写为.htm.html,这可能是您想要的,也可能不是。