繁体   English   中英

重定向和重写以从 url 中删除 .html

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM