代码之家  ›  专栏  ›  技术社区  ›  matt

htaccess:仅在特定情况下添加尾随斜杠

  •  2
  • matt  · 技术社区  · 6 年前

    有关.htaccess文件的快速问题

    我想前进 https://myurl.com/en https://myurl.com/en/ 带有尾随斜杠。

    这是我目前为止的尝试。

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

    我在这里做错什么了?谢谢你的帮助?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Gillsoft AB    6 年前

    您可以随时激活 DirectorySlash 对于特定位置:

    <Location "/en">
      DirectorySlash On
      FallbackResource /index.php
    </Location>
    

    我在这个问题上没有花那么多时间,但是你想在上面的链接中阅读关于它的警告。或者您可以使用其他解决方案:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/en$
    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
    

    如果图像等的相对URL有问题,请尝试将以下内容添加到页眉:

    <head>
     <base href="/" />
    <head>
    

    重新启动Apache以使更改生效。如果使用WordPress,请注意执行顺序。 在路由规则之前,必须找到所有重定向规则。wordpress规则将所有内容路由到index.php。

        2
  •  0
  •   Googlian    6 年前

    以确保所有URL都有一个尾随斜杠。

    下面的规则将继续 https://myurl.com/en https://myurl.com/en/ 结尾有一个尾随的斜杠。

    https://myurl.com/en https://myurl.com/en/

    为域名中的所有URL全局设置尾随斜杠。

    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$ https://myurl.com/$1/ [L,R=301]
    

    以下规则仅适用于特定的URL段:

    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^en$ /en/ [R=301,NC,L]
    

    清除浏览器缓存

    一旦你在你的 .htaccess 文件,您必须清除您的浏览器缓存,然后再试一次或通过一个新的匿名浏览模式打开测试您的更改,大多数现代浏览器通常缓存网页,这样您就看不到操作,除非您清除浏览器缓存。