.htaccess重写后能否隐藏URL子目录?实现login路径映射需求
解决.htaccess隐藏core/auth/路径的内部转发问题
没问题,我来帮你搞定这个规则调整!你之前用[R,L]导致地址栏变化,是因为R触发了外部重定向,咱们换成内部转发就可以了,同时还要确保查询参数不丢失。
这里是调整后的完整.htaccess代码:
RewriteEngine On # 处理/login路径的内部转发,自动保留查询参数 RewriteCond %{REQUEST_URI} ^/login$ [NC] RewriteRule ^ /core/auth/login [L,QSA] # 原有隐藏index.php的规则,继续保留生效 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
关键规则解释:
RewriteCond %{REQUEST_URI} ^/login$ [NC]:精确匹配请求路径为/login的请求,[NC]表示不区分大小写(比如/Login也能匹配)。RewriteRule ^ /core/auth/login [L,QSA]:把匹配到的请求内部转发到/core/auth/login,不会改变浏览器地址栏。其中:[L]表示这是最后一条匹配规则,处理完就停止后续规则;[QSA](Query String Append)会自动把原请求的查询参数(比如?param=abc¶mb=123)追加到目标路径后,确保参数不丢失。
- 原有隐藏
index.php的规则放在后面,处理除了/login之外的其他非文件、非目录请求,保证原有功能不受影响。
这样配置后,用户访问https://example.com/login?param=abc¶mb=123时,浏览器地址栏保持不变,服务器内部会转发到https://example.com/core/auth/login?param=abc¶mb=123处理。
内容的提问来源于stack exchange,提问作者Raymond Ukit
相关产品推荐
相关产品推荐

