yii2无法使用htaccess访问根子文件夹

时间:2019-07-04 09:42:45

标签: php .htaccess yii2

我真的不太擅长htaccess设置,并希望对此有所帮助。我在子文件夹中有一个项目,可以像这样打开:www.mydomain.com/subfolder/。我将项目放在“子文件夹”中。 “子文件夹”不是子域,我只是在根文件夹中创建了一个新文件夹。

我可以打开主页,但是所有其他页面,例如www.mydomain.com/subfolder/about、www.mydomain.com/subfolder/product都有500个内部服务器错误页面。我也无法访问上载文件夹中的上载文件,因此,像www.domain.com/subfolder/uploads/filename.jpg之类的URL将返回错误404。我很确定没有php错误,因为我也将其上传了我的另一个子域(不同的域),效果很好。

这是我的htaccess设置:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_URI} /(backend)
RewriteRule ^backend/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^backend/css/(.*)$ backend/web/css/$1 [L]
RewriteRule ^backend/font/(.*)$ backend/web/font/$1 [L]
RewriteRule ^backend/plugins/(.*)$ backend/web/plugins/$1 [L]
RewriteRule ^backend/images/(.*)$ backend/web/images/$1 [L]
RewriteRule ^backend/js/(.*)$ backend/web/js/$1 [L]

RewriteCond %{REQUEST_URI} !/backend/web/(assets|css|font|plugins|images|js)/
RewriteCond %{REQUEST_URI} /(backend)
RewriteRule ^.*$ backend/web/index.php [L]

RewriteCond %{REQUEST_URI} /(assets|css|js|img|fonts|uploads)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
RewriteRule ^img/(.*)$ frontend/web/img/$1 [L]
RewriteRule ^fonts/(.*)$ frontend/web/fonts/$1 [L]
RewriteRule ^uploads/(.*)$ uploads/$1 [L]

RewriteCond %{REQUEST_URI} !/(frontend|backend)/web/(assets|css|js|img|images|fonts|uploads|plugins|font)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

检查脚本后,我发现代码中有些不同。 而且我尝试修复一些这样的代码。

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/(backend)
RewriteRule ^backend/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^backend/css/(.*)$ backend/web/css/$1 [L]
RewriteRule ^backend/font/(.*)$ backend/web/font/$1 [L]
RewriteRule ^backend/img/(.*)$ backend/web/img/$1 [L]
RewriteRule ^backend/js/(.*)$ backend/web/js/$1 [L]
RewriteRule ^backend/plugins/(.*)$ backend/web/plugins/$1 [L]

RewriteCond %{REQUEST_URI} !/backend/web/(assets|css|font|img|js|plugins)/
RewriteCond %{REQUEST_URI} ^/(backend)
RewriteRule ^.*$ backend/web/index.php [L]

RewriteCond %{REQUEST_URI} ^/(assets|css|font|img|js|uploads)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteRule ^font/(.*)$ frontend/web/font/$1 [L]
RewriteRule ^img/(.*)$ frontend/web/img/$1 [L]
RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
RewriteRule ^uploads/(.*)$ frontend/web/uploads/$1 [L]

RewriteCond %{REQUEST_URI} !/(frontend|backend)/web/(assets|css|font|img|js|uploads|plugins)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php [L]

我添加了一些符号(^)。 对于上传文件(图像,js,css等),我建议您上传到文件夹backend / web / somefolder或frontend / web / somefolder。在这两个地方旁边放置图像,使您的图像无法在所有地方显示(以我的经验)。 另外,您可以尝试将 frontend / web / backend / web / 内的文件夹命名为相同名称,以便于记忆(请参阅我修复的代码,以了解我的意思)。希望对其他人有帮助。

如果有人有更好的解决方案,请在此处分享。谢谢。