YII URL, как создать новый URL

У меня есть один сайт, на котором я хочу URL, как SiteURL/about.html.

Я изменил код в config/main.php но когда я захожу на сайт, сессия истекает, когда я перехожу на любую другую страницу.

Если прокомментировать этот код 'showScriptName'=>false в config/main.php файл, затем он работает нормально, и теперь мой сеанс входа в систему сохраняется, и нас не истек, однако теперь мой URL становится таким SiteURL/index.php/about.html

Но я хочу URL как about.html.

У меня также есть еще один контроллер для опции игры, URL которого выглядит следующим образом: http://www.demo.com/index.php/Games/info/9.html но я хочу, чтобы URL, например, SiteURL/black-hook.html, был в этом " черный крючок "- так называется игра.

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

* SiteURL = http://www.demo.com/

1 ответ

Во-первых, чтобы добавить.html к своим страницам, вам нужно использовать опцию fake url Суффикс в urlManager.

Это можно сделать, добавив 'urlSuffix' =>'.html' на ваш urlManager Конфиг, как это

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

Во-вторых, для сокрытия index.php (называемого сценарием ввода) в вашем URL-адресе, помимо изменения конфигурации, вам необходимо изменить конфигурацию на вашем сервере apache/nginx.

Создайте файл /.htaccess со следующим содержимым и сохраните его

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

Затем проверьте, если AllowOveride All есть ли для вашего каталога приложения в вашем файле конфигурации apache Вы можете также добавить вышеупомянутую конфигурацию непосредственно в ваш файл конфигурации apache, используя элемент Directory без использования.htaccess. Примечание. Чтобы это работало, вам нужно включить механизм перезаписи в конфигурации Apache. Это можно сделать с помощью следующего набора команд.

a2enmod rewrite

Наконец перезапустите apache2 после

/etc/init.d/apache2 restart

или же

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