微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.html 页面的 301 重定向

如何解决.html 页面的 301 重定向

搜索 StackOverflow 并尝试多种 Regex 方法后,我似乎无法获得重定向,使站点上的每个 example.com/example.html 页面都指向简单的 example.com/example。我的 .htaccess 文件如下所示:

RewriteRule ^index\.PHP$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.PHP [L]

我的第一次尝试是

RedirectMatch 301 (.*)\.html$ https://example.com$1

虽然它适用于单个 .html 页面,但导致主页重定向https://example.com/index,这是 404。

我最近的尝试是在底部添加这个

RewriteRule ^(.*)\.html$ /$1 [L,R=301]

那根本行不通。然后我把同一行放在行前

RewriteRule . /index.PHP [L]

所以块看起来像这样

RewriteBase /
RewriteRule ^index\.PHP$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
RewriteRule . /index.PHP [L]

但这只会导致网站加载非常缓慢,并且在加载时图像和样式表被破坏了。

有没有办法做到这一点,我只是不明白?

解决方法

您可以在现有规则之前使用此重定向规则:

RewriteEngine On

# removes .htm,.html,index.htm or index.html - case ignore
RewriteCond %{REQUEST_URI} ^/(.*/)?(?:index|([^/]+))\.html?$ [NC]
RewriteRule ^ /%1%2 [R=301,L,NE]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。