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

时间:2019-01-17 12:49:55

标签: .htaccess mod-rewrite

有关我的.htaccess文件的快速问题

我想用斜杠将https://myurl.com/en转发到https://myurl.com/en/

这是我到目前为止的尝试。

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

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

2 个答案:

答案 0 :(得分:1)

您始终可以为特定位置激活DirectorySlash

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

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

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

如果图片等的相对网址出现问题,请尝试在页面标题中添加以下内容:

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

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

答案 1 :(得分:0)

为确保所有URL均带有斜杠。

以下规则会将https://myurl.com/en转发到https://myurl.com/en/,并在末尾加上斜杠。

  

https://myurl.com/enhttps://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文件进行了任何更改,就必须先清除浏览器缓存,然后再试一次,或者通过新的隐身浏览模式打开以测试更改,大多数现代浏览器通常都会缓存该网页因此,除非您清除了浏览器缓存,否则您将看不到该操作。