使用路由重定向在yii2中不起作用

8ulbf1ek  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(237)

我有ProjectsController.php其中我有actionIndex
在我的main.php文件中,我已经完成了如下的路由。

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

这意味着我试图重定向到项目控制器中的索引操作,url为/projects。我可以在我的本地主机中访问localhost/myproject/projects,但当我试图在live中访问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]

下面是/frontend/web/中的.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

请帮帮忙。我无法解决这个问题。我实际上无法理解原因。

iqjalb3h

iqjalb3h1#

您需要创建两个.htaccess。一个在项目根文件夹中,另一个在frontend/web文件夹中。
请按照Anant Singh的answer步骤回答此问题。
Yii2:-Pretty URL's are formed, but not working (says 404 “NOT FOUND”)
我希望它会有帮助。

ua4mk5z4

ua4mk5z42#

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

将根目录.htaccess中的上述规则更改为

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

相关问题