Laravel .htaccess 在访问 url.com/public 时重定向到主页



我的网站在以下网址中运行www.mywebsite.com没有任何问题。因此,在创建项目时,我在根文件夹中应用了一些.htaccess规则,如下所示:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Remove www    
RewriteCond %{HTTP_HOST} ^www.mywebsite.com$ [NC]
RewriteRule ^(.*)$ https://mywebsite.com$1 [R=301,L]
# Remove http and force https   
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [QSA,R,L]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (.w+$) [NC]
RewriteRule ^(.*)$ public/$1 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>

问题是,如果我访问www.mywebsite.com/public我仍然查看网站,但没有应用 CSS(因为 URL 错误(。

如何将 URLwww.mywebsite.com/public重定向到www.mywebsite.com,而不会www.mywebsite.com/public/img/someimage.png点燃我的 url?


编辑:为了让自己清楚:

www.mywebsite.com -> it's working -> I don't want to change that
www.mywebsite.com/public/img/someimage.png -> it's working -> I don't want to change that
www.mywebsite.com/public -> It's working -> I see my website without the CSS applied -> I WANT to change this by redirecting users to www.mywebsite.com

您永远不应该允许访问public文件夹之外的任何内容。

您的服务器应设置为转到public,而不是其上方的主文件夹。不要从public文件夹中移动index.php文件。

已解决

通过编辑文件/public_html/public/index.php我可以检查当前 URL 是否符合我的条件。

就我而言,每当 URL 中存在字符串public时,它总是有两个斜杠(因为.htaccess(,例如:

www.mywebsite.com/public/

话虽如此,在文件顶部:

if ($_SERVER['REQUEST_URI'] == '/public/')
{
header('location: http://' . $_SERVER['HTTP_HOST']);
exit;
}

最新更新