【问题标题】:Removing trailing slash from ALL URLs in site从站点中的所有 URL 中删除尾部斜杠
【发布时间】:2013-02-11 10:24:12
【问题描述】:

我对整个 .htaccess 有点陌生,我一直在尝试对其进行修改,以使我的所有链接都不会在其各自 URL 的末尾带有斜杠。我的网站是filmblurb.org。

Wordpress 开始和结束的 .htaccess 代码如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

如果有人能引导我正确地解决这个问题,我将不胜感激。谢谢。

【问题讨论】:

    标签: .htaccess trailing-slash


    【解决方案1】:

    您可以添加一个 RewriteRule 来消除尾部斜杠:

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

    【讨论】:

      【解决方案2】:

      问题不是由 .htaccess 引起的,而是由 wordpress 永久链接和 .htaccess 的组合引起的。

      1. 登录到您的网站并导航到永久链接,然后如果您没有使用自定义结构选项,请切换到它并确保末尾没有斜杠:

        /%category%/%postname%
        
      2. 然后将其添加到您的 .htaccess 文件中,在

        RedirectMatch 301 ^(.*)/$ /$1
        

      这比使用重写要好,因为它是重定向而不是重写。

      如果这仍然不起作用,那么我建议您安装 yoast seo 插件,并且其中有一个设置可以做到这一点。

      【讨论】:

        【解决方案3】:

        这对我有用;从所有路由中删除所有尾部斜杠,同时强调 REQUEST_URI 以斜杠开头(至少在 .htaccess 文件中):

        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} /(.*)/$
        RewriteRule ^ /%1 [R=301,L]
        

        只是不要使用 %{REQUEST_URI} (.*)/$。因为在根目录中,REQUEST_URI 等于 /,前导斜杠,它会被误解为尾部斜杠。

        来源: https://stackoverflow.com/a/27264788/2732184

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-05
          • 1970-01-01
          • 2014-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-09
          相关资源
          最近更新 更多