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

使用路由的重定向在yii2中不起作用,yii,yii2,yii2-advanced-app,yii-routing,Yii,Yii2,Yii2 Advanced App,Yii Routing,我有projectscoontroller.php,其中有actionIndex 在frontend/config/main.php中的main.php文件中,我完成了如下路由 'components' => [ 'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true, 'rules' => [ 'p

我有
projectscoontroller.php
,其中有
actionIndex

frontend/config/main.php
中的main.php文件中,我完成了如下路由

 'components' => [
    'urlManager' => [
        'showScriptName' => false,
        'enablePrettyUrl' => true,
        'rules' => [
            'projects'=>'projects/index',
         ],
       ],  
     ]
这意味着我正试图重定向到带有url
/projects
的项目控制器中的索引操作。我可以在本地主机中访问,如
localhost/myproject/projects
,但是,当我尝试在live like
www.myproject/projects/
中访问相同的内容时,它会重定向到主页,如果我尝试访问like
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/

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
请帮忙。我无法解决这个问题。事实上,我无法理解原因

RewriteRule ^(.*)$      frontend/web/index.php/$1   [QSA,L,NC] 
在root.htaccess中更改上述规则

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

您需要创建两个
.htaccess
。一个在项目根文件夹中,另一个在
frontend/web
文件夹中

请按照阿南特·辛格的步骤回答这个问题


我希望这会有所帮助。

您使用的是哪台服务器?您的.htaccess文件的路径是什么?您的common/main.php文件中是否也有urlManager组件?@MAZ否,我在common/main.php中没有urlManager。我上面提到的.htacces代码来自我的根文件,即“/”。我还编辑了我的查询并添加了frontend/web/的.htacces文件。htaccess@KandarpPatel我使用的是godaddy服务器是godaddy共享主机吗?在这种情况下。这个问题似乎对你有帮助