我的网站在以下网址中运行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;
}