【问题标题】:Add Trailing Slash to URLs在 URL 中添加斜杠
【发布时间】:2009-11-03 15:36:31
【问题描述】:

在 Google 上有很多add trailing slash .htaccess 的结果,但我找到的所有示例都需要使用您的域名,如下例所示:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

我的问题是硬编码的域名在我的本地开发机器上不起作用。有没有办法在不明确告诉 mod_rewrite 域名的情况下添加尾部斜杠?

【问题讨论】:

  • 看起来更像是 serverfault.com 而不是 stackoverflow.com 的问题。

标签: regex .htaccess mod-rewrite regex-negation regex-lookarounds


【解决方案1】:

您不需要指定域,您可以简单地使用绝对 URL 路径:

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

这也会检查 URL 方案已过时。

【讨论】:

    【解决方案2】:

    这应该可行:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !example.php
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]
    

    【讨论】:

    • .* 将匹配反斜杠,使用 [^/]* 代替
    • err,除了我的意思,比如下面Gumbo使用的。
    • @Oz,是的,这样会更好。我只是在演示 %{HTTP_HOST} 的用法,所以我对最初给定的 sn-p 进行了最小的更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多