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
Убедитесь, что у вас установлен модуль перезаписи URL. Можно найти здесь: http://www.iis.net/downloads/microsoft/url-rewrite
удалить комментарий из config/main.php или config/web.php
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ],
Создайте новый файл в веб-каталоге 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