我想重定向 (301( 所有没有.html的 url 到 .html。例:
example.com/site 应重定向到 example.com/site.html
我尝试了以下方法:
RewriteRule (.+)$ /$1.html [L,R=301]
您的规则可能会导致重定向循环,因为即使 URL 已被重定向,它也会重写 URL。
在您的模式中,您需要确保 URL 不会以 .html
结尾。
您可以使用否定模式来实现此目的:
RewriteRule !.html$ %{REQUEST_URI}.html [L,R=301]
或者,如果您不想将其应用于空路径(例如在您的示例中(或需要重用模式的匹配项,则可以使用 RewriteCondition:
RewriteCond %{REQUEST_URI} !.html$
RewriteRule (.+)$ $1.html [L,R=301]
请注意,这是一个非常简单的示例,仅适用于您描述的确切情况。这也会重写以 .htm
结尾的 URL 到 .htm.html
,这可能是您想要的,也可能不是您想要的。