【问题标题】:Apache .htaccess Remove Trailing SlashesApache .htaccess 删除尾部斜杠
【发布时间】:2012-11-27 19:40:31
【问题描述】:

好的,我已经用谷歌搜索了足够多的东西,找到了足够多的博客和足够多的关于这个主题的 SO 线程,但是这些解决方案都没有对我有用。

我已经创建了文件夹,因此可以通过以下 URL 访问它们:

我想要做的就是通过以下方式访问它们:

所以基本上,删除尾部斜杠。

【问题讨论】:

  • 你肯定没搜过...

标签: regex apache .htaccess mod-rewrite apache2


【解决方案1】:

确保您在 Apache 配置中关闭DirectorySlash Directive

罢工>

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST}:%{SERVER_PORT}s ^(.*):(443(s)|\d+s)$
RewriteRule ^/?(.*)/$ http%3://%1/$1 [R=301,L,QSA]

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !(?:^|;\s*)redirect=301
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST}:%{SERVER_PORT}s ^(.*):(443(s)|\d+s)$
RewriteRule ^/?(.*)/$ http%3://%1/$1 [R=301,L,QSA,CO=redirect:301:%1:0:/]

【讨论】:

  • @user1437328 - 如果您确定在 Apache 配置中关闭了目录斜杠,那么您的浏览器很可能会自动添加尾部斜杠(这不应该!)。我已经使用 cookie 用“循环预防机制”更新了我的答案,所以重定向不应该跳入循环......
【解决方案2】:

您可以使用以下重写来删除尾部斜杠。

# remove trailing slashes
RewriteRule (.*)/$ $1 [L,R=301]

您需要启用 mod_rewrite。这可以放在 .htaccess 文件或 apache 配置中。

【讨论】:

  • 不,不走运!顺便说一句,我的 .htaccess 在 /home/user/www/mysite.com/.htaccess 中,而 folder1 是 /home/user/www/mysite.com/folder1 (与 folder2 相同
  • 使用重定向标志 [R] 你必须提供完整的 url (http...)
  • 能否确认服务器上是否启用了mod_rewrite?你可以在服务器上运行 PHP 吗?如果是这样,您可以按照这些说明进行操作serverfault.com/questions/397168/…
猜你喜欢
  • 2015-01-15
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
相关资源
最近更新 更多