如何在用户提供重定向url时完全删除yii中的index.php

时间:2013-10-24 13:55:31

标签: .htaccess yii url-rewriting

我搜索如何删除yii中的index.php。 它工作正常,但是 How to remove index.php in Yii Framework

保护/配置/ main.php

'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array(
            'redirect/<redirectUrl>'=>'site/index',
            'login'=>'site/login',
            'privacy'=>'site/privacy',
            'password'=>'site/forgot',
            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    ),

我的htaccess文件

DirectoryIndex index.php
<IfModule mod_rewrite.c>
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
</IfModule>

当我检查以下网址

yii.mywebapp.com/index.php?redirecturl = http://www.google.com

它正在运作 但我删除了index.php

yii.mywebapp.com/?redirecturl = http://www.google.com

它也在工作

但我需要一些用户请求重定向网址 yii.someurl.com/index.php?redirecturl=someurl 我想隐藏url中的index.php

请帮助

1 个答案:

答案 0 :(得分:4)

将此规则放在RewriteEngine On行的下方:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*?)index\.php([^\s]*) [NC]
RewriteRule ^ /%1%2 [R=301,L,NE]