我有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
请帮帮忙。我无法解决这个问题。我实际上无法理解原因。
2条答案
按热度按时间iqjalb3h1#
您需要创建两个
.htaccess
。一个在项目根文件夹中,另一个在frontend/web
文件夹中。请按照Anant Singh的answer步骤回答此问题。
Yii2:-Pretty URL's are formed, but not working (says 404 “NOT FOUND”)
我希望它会有帮助。
ua4mk5z42#
将根目录.htaccess中的上述规则更改为