[英]Redirect and Rewrite to remove .html from url
我有一个非常基本的重写规则,我一直在努力实现它。 我有一个静态 HTML 站点,我想要漂亮的 URL。
因此,我希望/something
为/something.html
提供服务,并且我还想(从外部)从/something.html
重定向到/something
,以免因托管重复内容而受到 SEO 的惩罚。
我不想使用多视图,也不想使用<rel cannonical="">
这就是我目前所拥有的。
RewriteRule ^(.*)\.html$ /$1 [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]
它导致无限重定向循环。
在我看来,即使请求的 URL 不是以 .html 结尾,第一个规则也会保持匹配。
是的,您的规则会由于使用REQUEST_URI
(通过RewriteRule
)而导致重定向循环,在应用规则后会发生变化。
您可以使用:
RewriteCond %{THE_REQUEST} \.html [NC]
RewriteRule ^(.*)\.html$ /$1 [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]
THE_REQUEST
变量表示 Apache 从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.