Yii, как получить чистый и красивый URL

Я новичок в Yii Framework. Я раскомментировал менеджер URL в файле конфигурации и получил схему URL, как это:

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

Я не хочу index.php в URL. Поэтому я хочу URL-адрес, что-то вроде этого

http://localhost/mysite/displayAll

Чтобы сделать это, что я должен сделать. Я играл с менеджером URL и некоторым htaccess, но ничего не вышло.

Пожалуйста помоги

4 ответа

Решение

Пытаться:

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

В вашем.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 от сгенерированного URL.

Чтобы узнать все об URL-менеджере Yii, ознакомьтесь с этой темой в документации Yii: http://www.yiiframework.com/doc/guide/1.1/en/topics.url

В httpd.conf ищите,

     LoadModule rewrite_module modules/mod_rewrite.so 

(удалить # из начала строки, если еще не удалено.)

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

Создайте.htaccess в каталоге, где находится ваш index.php, и вставьте следующий код:

IndexIgnore */*
RewriteEngine on

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

RewriteRule . index.php

И в защищенном /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>',
     ),
 ),

Если вы все еще не получаете чистый URL, перейдите к файлу конфигурации виртуального хоста "httpd-vhosts", если вы его используете, и вставьте его в свой файл конфигурации,

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

На IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10

  1. Убедитесь, что у вас установлен модуль перезаписи URL. Можно найти здесь: 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>
    

Пример результата: http://localhost/basic/web/site/contact

Другие вопросы по тегам