WP Rocket 防止 301 重定向到带有斜杠的 URL

问题描述 投票:0回答:2

当用户通过 url 访问我的网站时:

example.com/post-name

Wordpress 应执行 301 重定向到:

example.com/post-name/

但是由于 WP Rocket 缓存插件,它不起作用 (我无法找出为什么会发生这种情况,但 WP Rocket 肯定会导致问题)

可以对带有斜杠的 url 执行 wp_redirect 吗? 除了.htaccess重定向还有其他解决方案吗?

php wordpress .htaccess redirect trailing-slash
2个回答
1
投票

为了防止 WordPress 和/或插件的任何干预,您可以尝试通过 .htaccess (Apache) 强制使用尾部斜杠:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !/wp-json/ [NC]
RewriteCond %{REQUEST_URI} !/wp-admin/ [NC]
RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*[^\/])$ %{REQUEST_URI}/ [R=301,L] 
</IfModule>

RewriteRule 通过 mod_rewrite(如果启用)匹配任何不带尾部斜杠的路径,并重定向到尾部斜杠的同一路径。

RewriteCond 排除

/wp-json/
wp-admin/
文件夹中的路径,以及带点的路径,表示带有扩展名的文件(例如
.jpg
.css
等)。

/wp-json/
wp-admin/
文件夹中强制添加尾部斜杠可能会导致 WordPress 管理面板和全站编辑出现问题。


0
投票

对于那些对已接受的答案不完全满意的人(我也投了赞成票,因为这是一个正确的解决方案,但不是完整的解决方案)。

那么,.htaccess 重定向有什么问题呢?
您可能注意到,对于某些事件 (https://docs.wp-rocket.me/article/1648-when-wp-rocket-writes-to-the-htaccess-file) .htaccess 相关代码将通过以下方式重新生成WP-火箭。丑陋的部分是 Wp-Rocket 总是将其代码写在 .htaccess 的第一行

# BEGIN WP Rocket v3.15.9
  WP-Rocket codes
# END WP Rocket
... all the other current .htaccess content

所以,你可以想象每次发生这种情况时,你的尾部斜杠代码都会跟在 WP-Rocket 代码后面,这意味着它不再起作用了。

好消息是 WP-Rocket 在这里解决了这个问题(https://docs.wp-rocket.me/article/131-redirection-to-enforce-trailing-slash-on-urls)。

附注我花了一些时间找到完整的解决方案并更新了这个问题,这样您就可以节省时间。请毫不犹豫地投票以帮助其他人看到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.