красивая ссылка не работает в yii2

Я начал изучать yii2 и пытался делать красивые вещи с URL, но безуспешно. Что я сделал:-

в config / web.php (я редактировал ниже):

'urlManager' => [
'class' => 'yii\web\UrlManager',
// Hide index.php
'showScriptName' => false,
// Use pretty URLs
'enablePrettyUrl' => true,
'rules' => [
],

тогда я создал .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

Также я открыл файл apache2.conf и изменил его так:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All <! -- instead of none -->
Require all granted
</Directory>

Также я проверил изменения через команду:

 grep -R AllowOverride /etc/apache2

И это показывает, как показано ниже:

/etc/apache2/apache2.conf:  AllowOverride All  <!-- It is showing that done -->

Сейчас:

когда я получаю доступ к своей странице через:

HTTP: // локальный / yii2 / веб /

он открывается, и когда я нахожу на ссылку О ссылке, он показывает мне: HTTP: // локальный / yii2 / веб-сайта / / о (который показывает, что красивая горничная URL)

Но этот URL не работает (говорит 404 найдено)

Я попробовал ниже сообщения каждого кода:

Как получить доступ к контроллеру с красивым URL в Yii2

Включить чистый URL в Yii2

6

Решение

Наконец-то я заработал: —

1. создал два файла .htaccess (один в корне и один в веб-папке моего приложения): —

root .htaccess: —

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ web/$1 [L]

RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>

веб-папка .htaccess: —

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

2. В config / web.php: —

'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
// Your rules here
],
],

3. Изменено в (apache2.conf), как показано ниже: —

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

4. Затем запустите следующие команды: —

а. sudo /etc/init.d/apache2 stop (чтобы остановить Apache)

б. sudo killall apache2 (убить процесс и проверить, что процесс не запущен)

с. sudo netstat -l|grep www (чтобы проверить порт 80 не используется сейчас)

д. sudo /etc/init.d/apache2 restart (перезапустить Apache)

И теперь все работало нормально.

Кстати, спасибо всем, кто пытался мне помочь.

Ссылка взята: —

https://www.my-yii.com/forum/topic/how-to-set-up-pretty-urls-in-yii2-basic-template

https://askubuntu.com/questions/48362/how-to-enable-mod-rewrite-in-apache

12

Другие решения

Почему вы просто не даете правила в своем файле web.php? как ниже:

'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],

Правила, которые я здесь установил, являются лишь примером, вы можете установить его так, как вы хотите, чтобы ваш URL выглядел.

РЕДАКТИРОВАТЬ:
Если он все еще не работает, попробуйте установить виртуальный хост вместо:

<Directory "/var/www/html/yii2/web/">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
Allow from 127.0.0.1 localhost
</Directory>
6

По вопросам рекламы [email protected]