首页 > 解决方案 > 最后只强制 1 个单斜线

问题描述

我希望我的 wordpress 强制在某个帖子或页面 url 的末尾只有一个斜杠。

当 WP 页面未缓存时,我在管理员中,一切正常。

像这样的情况:

  1. somewww.com/somepage
  2. somewww.com/somepage//
  3. somewww.com/somepage///

all 被强制到 somewww.com/somepage/ 那里只有一个斜线。

但是,如果我们在页面的缓存版本上,则打开 url 而不会在末尾强制使用 1 个斜杠。

所以,我找到了第二个代码(在 WP Rocket 网站上):

# Force trailing slash
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|xml|txt|js|php|scss|webp|mp3|avi|wav|mp4|mov)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [L,R=301]

在 htaccess 中,我一开始就编写了代码。

因此,目前仅在第 1 种情况下运行良好,其他都失败了。

谁能帮助我在 Wordpress 上重写页面网址?谢谢

标签: .htaccessmod-rewriteurl-rewriting

解决方案


您可以使用此规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_URI} !/$ [OR]
RewriteCond %{THE_REQUEST} \s[^?]*/{2,}[\s?]
RewriteRule ^(.*?)/?$ https://%{HTTP_HOST}/$1/ [L,R=301,NE]

确保在测试此规则之前清除浏览器缓存。


推荐阅读