Yii如何获得干净漂亮的URL

时间:2012-08-04 09:59:52

标签: .htaccess url-rewriting yii yii-extensions

我是Yii框架的新手。我在配置文件中取消注释了url管理器并获得了这样的url方案:

http://localhost/mysite/index.php/displayAll

我不希望url中的index.php。所以我想要一个像这样的网址

http://localhost/mysite/displayAll

要做到这一点,我该怎么办。我确实玩过网址管理员和一些htaccess,但没有什么进展顺利。

请帮忙

4 个答案:

答案 0 :(得分:9)

在你的.htaccess中你应该有这个:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

然后你必须将urlManager组件添加到主配置文件中:

array(
    ......
    'components'=>array(
        ......
        'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName'=>false,
            'rules'=>array(
                'pattern1'=>'route1',
                'pattern2'=>'route2',
                'pattern3'=>'route3',
            ),
        ),
    ),
);

请注意'showScriptName'=> false ,这会隐藏生成的网址中的'index.php'。

要查找有关Yii的URL Manager的所有信息,请在Yii的文档中查看此主题: http://www.yiiframework.com/doc/guide/1.1/en/topics.url

答案 1 :(得分:3)

尝试:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?mysite/(.*)$ /mysite/index.php/$1 [L]

答案 2 :(得分:0)

在httpd.conf中查找,

     LoadModule rewrite_module modules/mod_rewrite.so 

(如果尚未删除,则从行的开头删除#。)

              OR 
     In wamp click on wampserver-> Apache -> Apache Modules and enable rewrite_module.

在index.php所在的目录中创建.htaccess,并粘贴以下代码:

IndexIgnore */*
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

在protected / config / main.php

 'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'rules' => array(
       '<controller:\w+>/<id:\d+>' => '<controller>/view',
       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
     ),
 ),

如果仍然没有获得干净的网址,请转到虚拟主机配置文件“httpd-vhosts”,如果您正在使用它,并粘贴到您的配置中,

 <Directory "C:/wamp/www">
    AllowOverride All 
 </Directory> 

答案 3 :(得分:0)

在IIS 7,IIS 7.5,IIS 8,IIS 8.5,IIS 10

  1. 确保您已安装网址重写模块。可在此处找到:http://www.iis.net/downloads/microsoft/url-rewrite

  2. config / main.php config / web.php

    中删除评论
        'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
    ],
    
  3. 在网络目录basic / web / web.config 中创建新文件,然后添加 system.webServer

    <directoryBrowse enabled="false" />
    
    <rewrite>
        <rules>
        <rule name="Hide Yii Index" stopProcessing="true">
            <match url="." ignoreCase="false" />
            <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            </conditions>
                <action type="Rewrite" url="index.php" appendQueryString="true" />
        </rule> 
        </rules>
    </rewrite>
    
  4. 示例结果:http://localhost/basic/web/site/contact