【问题标题】:Yii url rewrite strange behavior (.htaccess + urlmanager)Yii url 重写奇怪的行为(.htaccess + urlmanager)
【发布时间】:2018-07-25 09:58:52
【问题描述】:

我正在隐藏 index.php 并使用以下代码使 url 友好

.htaccess

Options +FollowSymLinks
IndexIgnore */*
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

在主配置中,

'urlManager'=>array(
               'urlFormat'=>'path',
                'showScriptName'=>false,
                'rules'=>array(

                ),
         ),

它按预期工作,但问题是当输入不存在的 url 时,它总是重定向到登录页面“site/login”。因此,如果 url 错误/不存在而不是显示 404,它会重定向到登录页面。我做错了什么?

【问题讨论】:

  • 检查来宾访问 actionError 的权限。您还可以在 apache 中打开 LogLevel 调试以跟踪重写规则。但这似乎是比重写更多的安全规则问题......
  • 谢谢,就是这样。我不知道它是如何逃脱我的。我为站点控制器创建了一个转义过滤器,并且正在为客人过滤 actionerror。与url重写无关。您能否发布答案以便我接受?

标签: php .htaccess yii url-rewriting


【解决方案1】:

检查来宾访问 actionError 的权限。您还可以在 apache 中打开 LogLevel 调试以跟踪重写规则。但这似乎是比重写更多的安全规则问题

【讨论】:

    【解决方案2】:

    当使用路径urlFormat你需要激活useStrictParsing来渲染不正确的URL的404页面,像这样修改你的配置

    'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName' => false,
        'useStrictParsing'=>true,
        'rules'=>array(
    
        ),
    ),
    

    查看http://www.yiiframework.com/doc/api/1.1/CUrlManager#useStrictParsing-detail了解更多详情

    【讨论】:

    • 感谢您的回答。然而,我在访问过滤器上犯了一个愚蠢的错误(请参阅@emte 的评论)。
    • 只要解决了 :).. strictParsing 也会导致类似的问题,虽然它不会总是重定向到站点/登录当然
    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2020-11-06
    • 2016-12-27
    相关资源
    最近更新 更多