Перенаправление с использованием маршрутизации не работает в yii2 - PullRequest
0 голосов
/ 01 октября 2019

У меня есть ProjectsController.php, в котором у меня есть actionIndex

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

 'components' => [
    'urlManager' => [
        'showScriptName' => false,
        'enablePrettyUrl' => true,
        'rules' => [
            'projects'=>'projects/index',
         ],
       ],  
     ]

Какойозначает, что я пытаюсь перенаправить на индекс действия в контроллере проектов с URL /projects. Я могу получить доступ на своем локальном хосте, как localhost/myproject/projects, но, когда я пытаюсь получить доступ к тому же в прямом эфире, как www.myproject/projects/, он перенаправляет на домашнюю страницу, и если я пытаюсь получить доступ как www.myproject/frontend/web/projects/index, то я могу перенаправитьна правильную страницу. Не только это конкретное действие и контроллер, все другие маршруты, упомянутые в main.php, перенаправляют на домашнюю страницу.

Ниже приведен мой .htaccess код файла в моем корневом файле '/'

    # prevent directory listings
#Options -Indexes
#IndexIgnore */*

# follow symbolic links
#Options FollowSymlinks
RewriteEngine on
#RewriteCond %{REQUEST_URI} ^/common/css/
#RewriteRule ^common/css/(.*)$ common/css/$1 [L]
#RewriteCond %{REQUEST_URI} ^(?!.*/web/)
#RewriteCond %{REQUEST_URI} !^/web/
#RewriteRule .* backend/web/index.php [L]
#RewriteCond %{REQUEST_URI} ^(?!.*/web/)
#RewriteRule ^(.*)?$ backend/web/$1 [L,PT]

#RewriteCond %{REQUEST_URI} !^/frontend/web/
#RewriteRule backend/(.*)$ backend/web/index.php [L]
#RewriteRule ^frontend/(.*)$ frontend/web/$1 [L]
#RewriteBase /
RewriteRule ^common/(.*)$      common/$1   [QSA,L,NC]
RewriteRule ^frontend/images/(.*)$      frontend/images/$1   [QSA,L,NC]
RewriteRule ^(.*)$      frontend/web/index.php/$1   [QSA,L,NC] 

#RewriteCond %{REQUEST_URI} ^frontend/(assets|css|js|images|themes)
#RewriteRule ^frontend/images/(.*)$      frontend/images/$1   [QSA,L,NC]

#RewriteCond %{REQUEST_URI} ^/frontend/web/projects/$
#RewriteRule frontend/projects/(.*)$ frontend/web/index.php/projects/$ [L]
#RewriteCond %{REQUEST_URI} ^(?!.*/themes/)

#RewriteCond %{REQUEST_URI} ^/(assets|js|images|themes|uploads)
#RewriteRule ^themes/(.*)$ backend/web/themes/$1 [L]
#RewriteRule ^images/(.*)$ backend/images/$1
#RewriteRule ^css/(.*)$ backend/web/css/$1 [L]



#RewriteRule ^(.*)?$ backend/themes?$ [L,PT]
#RewriteRule ^(.+)?$ frontend/web/$1
#
#RewriteCond %{REQUEST_URI} !^/backend/(assets|css|themes)/
#RewriteRule .* backend/themes/$1 [L]  

#Options -Indexes
#RewriteEngine on


#
#RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
#RewriteCond %{REQUEST_URI} !index.php
#RewriteRule frontend/web(.*) frontend/web/index.php [L]

#RewriteCond %{REQUEST_URI} ^/(assets|css|js|images|themes)
#RewriteRule ^assets/(.*)$ backend/web/assets/$1 [L]
#RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
#RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
#RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
#RewriteRule ^themes/(.*)$ frontend/web/themes/$1 [L] 

Ниже .htaccess от /frontend/web/

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

Пожалуйста, помогите. Я не могу решить это. Я на самом деле не могу понять причину.

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Вам нужно создать два .htaccess. Один в корневой папке вашего проекта, а другой в вашей папке frontend/web.

Пожалуйста, следуйте инструкциям ответа Ананта Сингха на этот вопрос.

Yii2: - Довольно URL-адреса сформированы, но не работают (говорит 404 «НЕ НАЙДЕНО»)

Надеюсь, это поможет.

0 голосов
/ 03 октября 2019
RewriteRule ^(.*)$      frontend/web/index.php/$1   [QSA,L,NC] 

Измените вышеприведенное правило в корне .htaccess на

RewriteRule ^(.*)$      frontend/web/$1   [L,NC] 
...