Подтвердить что ты не робот

Как удалить index.php в Yii Framework

enter image description here Привет, парень, я новичок в Yii. Я хочу удалить index.php из моих URL-адресов. После документации yii, когда я поместил код двигателя rewrite в мой файл .htaccess и установил showScriptName в false в файле config/main.php, я получаю ошибку внутреннего сервера 500. Мой файл .htaccess находится в корневой папке моего приложения. Скажите мне, где я ошибаюсь

UPDATE:

Это код в моем файле .htaccess:

# 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
4b9b3361

Ответ 2

Если вы также хотите удалить /index из URL главной страницы, добавьте ''=>'site/index' в начало ваших правил urlManager, например:

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName' => false,
    'rules'=>array(
        ''=>'site/index',
        '<action>'=>'site/<action>',

Ответ 3

взято непосредственно из документации yii

Скрытие index.php Еще одна вещь, которую мы можем сделать для дальнейшей очистки наших URL-адресов, т.е. Скрытия записи script index.php в URL-адресе. Это требует от нас настройки веб-сервера, а также компонента приложения urlManager.

Сначала нам нужно настроить веб-сервер так, чтобы URL-адрес без записи script все равно мог обрабатываться записью script. Для HTTP-сервера Apache это можно сделать, включив механизм перезаписи URL-адресов и указав некоторые правила перезаписи. Мы можем создать файл /wwwroot/blog/.htaccess со следующим контентом. Обратите внимание, что один и тот же контент можно также добавить в файл конфигурации Apache в элементе Directory для /wwwroot/blog.

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

Затем мы настраиваем свойство showScriptName компонента urlManager как false.

Теперь, если мы будем называть $this- > createUrl ('post/read', array ('id' = > 100)), мы получим URL/post/100. Что еще более важно, этот URL-адрес может быть правильно распознан нашим веб-приложением.

Надеюсь, это поможет, потому что также решила мою проблему.

Ответ 4

Сделайте эти 3 шага:

  • Включить перезапись Url на Apache.

  • Поместите .htaccess в корневой каталог вашего проекта

RewriteEngine on

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

RewriteRule . index.php
  • В вашей конфигурации protected/config/main.php установите showScriptName на false, как это, на компоненты вашего менеджера URL → urlManager
'urlManager'=>array(
  'urlFormat'=>'path',
  'rules'=>array(
      '<controller:\w+>/<id:\d+>'=>'<controller>/view',
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  ),
  'showScriptName'=>false,
)

Ответ 5

измените конфигурацию /main.php, как показано ниже:

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

затем поместите файл htaccess в базовый каталог с защищенной папкой (он может находиться внутри защищенной папки) введите ниже код в файл 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

или попробуйте с этим ---

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

сделано... надеюсь, что это сработает

Ответ 6

Я только наткнулся на этот поток, но обнаружил, что для его работы я не только должен был следовать инструкциям для добавления файла .htaccess, но также должен был раскомментировать раздел ниже из моего основного файла конфигурации (\ protected\config\main.php):

        // uncomment the following to enable URLs in path-format

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

Ответ 7

У меня была и эта проблема сегодня, когда я переместил свой проект на Linux-сервер. Я сделал все, что показано, но не помогло. Затем я скопировал файл .htaccess в каталог protected, затем он сработал.

Ответ 8

Убедитесь, что если все ваши изменения в .htaccess и urlManager, если они все еще не работают никому из вас, это то, что вы изменили свой параметр AllowOverride для корневого каталога в файле Apache httpd.conf на "Все" вместо "None". После модификации перезапустите apache. Поскольку это параметр, который позволяет apache решить, что все параметры могут быть переопределены в файле .htaccess

Ответ 9

изменить значения конфигурации apache

AllowOverride none to AllowOverride ALL

в httpd.conf или httpd-vhosts.conf