除了主页/登录页面之外,使用.htaccess删除尾部斜杠

Dan*_*Dan 17 .htaccess

我已成功修改我的.htaccess文件以删除大多数页面上的尾部斜杠,但我想知道如何免除我的主页/目录?例如:

domain.com/test/成功重定向到domain.com/test

但是,当我点击我的域时,它会附加根文档

domain.com/重定向到domain.com/index.php

是否有一个条件,我可以添加忽略根URL尾随斜杠,以便它不会尝试删除尾部斜杠并添加我的默认脚本?这是我到目前为止所拥有的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$  /$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 29

好.经过一系列的反复试验,我回答了自己的问题.

第三行表示URI中必须有一些内容才能执行重定向,因此如果url只包含初始斜杠,则不会重定向.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule ^(.+)/$ http://www.domain.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

  • 而不是`http:// www.domain.com/$ 1`你可以更好地使用`http://www.% {HTTP_HOST}/$ 1`.因此,用户无需编辑该行并可能出错. (4认同)
  • @YH的解决方案不适用于子目录中的网站(也不适用于localhost,它本身不能有`www.).因此,例如`localhost/web1/page1 /`以错误的方式重定向到`www.localhost/page1`. (2认同)

Gre*_*ham 17

重定向请求以/除根之外的所有URL结尾:

RedirectMatch 301 ^(.+)/$ $1
Run Code Online (Sandbox Code Playgroud)


Ant*_*ist 9

怎么样

RewriteEngine On
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 
Run Code Online (Sandbox Code Playgroud)