基于MVC架构的网站HTTPS重定向与.htaccess配置咨询
我来帮你梳理下你当前MVC网站里的.htaccess配置情况,把各个目录的配置清晰整理并解析:
当前.htaccess文件分布
bestil根目录app目录public目录
1. bestil 根目录下的.htaccess配置
这个配置主要负责强制HTTPS跳转和根路径重定向到public目录,是网站入口层的基础配置:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L] RedirectMatch ^/$ /public/
配置解析:
RewriteEngine On:开启Apache的URL重写引擎,是所有重写规则生效的前提RewriteCond %{HTTPS} !=on:判断当前请求是否未使用HTTPS协议RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]:将所有非HTTPS请求重定向到HTTPS地址(默认是临时重定向302,若需要永久重定向可改为[R=301,L])RedirectMatch ^/$ /public/:直接将网站根路径(/)的请求重定向到/public/子目录,符合MVC架构将public作为唯一对外访问入口的设计
2. public 目录下的.htaccess配置(已提供部分)
Options -MultiViews RewriteEngine On RewriteBa...
已提供部分解析:
Options -MultiViews:关闭Apache的MultiViews功能,避免Apache自动匹配文件(比如请求/home时不会自动尝试加载home.php),确保重写规则完全主导路由逻辑RewriteEngine On:显式开启重写引擎(子目录配置会继承父目录设置,但显式声明更稳妥)
通常在MVC架构中,public目录的.htaccess还会包含将所有请求转发到index.php的核心规则,示例补充如下(如果你的配置没写完,这是最常见的后续内容):
# 补充常见的MVC路由规则 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
这条规则会把所有非文件、非目录的请求都转发到public/index.php,由MVC的路由系统统一处理。
3. app 目录下的.htaccess配置
你目前没提供这个目录的配置,从MVC架构的安全性角度出发,app目录存放核心业务代码,应该禁止外部直接访问,推荐配置如下:
# 针对Apache 2.2及以下版本 Deny from all # 针对Apache 2.4+版本(更推荐) Require all denied
内容的提问来源于stack exchange,提问作者frankmyhre
相关产品推荐
相关产品推荐

