【问题标题】:Yii2 Trailing slash always appear on home URLYii2 尾部斜杠总是出现在主页 URL 上
【发布时间】:2017-02-01 01:07:02
【问题描述】:

结尾的斜杠始终出现在主页 URL ( www.test.com/ ) 上。 即使在输入像 www.test.com 这样的普通 url 后,它也会被重定向到 www.test.com/

这是我的网址配置:

'urlManager' => [
        'class' => 'yii\web\UrlManager',
        'showScriptName' => false,
        'enablePrettyUrl' => true,
        'rules' => [

                   ...

                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',

                ],
    ],

这是 .htaccess 文件:

RewriteEngine on

# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


# Otherwise forward it to index.php
RewriteRule . index.php

我希望主页像这样 ( www.test.com ) 加载并重定向到 www.test.com ,即使用户输入www.test.com/ 在网址中

【问题讨论】:

  • 你确定这不是你的浏览器的行为吗?检查不同的浏览器。
  • @Bizley 这是真的。这是浏览器的行为。它在 Chrome 上进行,但不在 Firefox、Opera 上。这可以在 Chrome 上解决吗?
  • 这只是显示 URL 的问题,纯粹是装饰性的。所有浏览器都以斜线结尾 URL,但并非所有浏览器都显示它。
  • 好的。感谢您的解释。

标签: php .htaccess yii2


【解决方案1】:

要使用 .htaccess 删除尾部斜杠,您可以使用:

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

确保在测试之前清除缓存,但应该可以正常工作。

编辑:

RewriteCond %{THE_REQUEST} //
RewriteRule .* $0 [R]

【讨论】:

  • 奇怪,我知道上面的方法是可行的……好吧,我添加了一个编辑供你试用。
猜你喜欢
  • 2014-03-07
  • 2012-06-14
  • 1970-01-01
  • 2019-07-10
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多