Apache下通过.htaccess隐藏URL跳转后子目录路径的咨询
解决根目录URL不变加载子目录内容的.htaccess配置
你之前的配置用了R=301这个外部重定向标记,所以浏览器地址栏会显示重定向后的/gmcomputers/路径。要实现URL不变但加载子目录内容,需要改成内部重写,修改后的代码如下:
RewriteEngine On # 只匹配根目录的请求 RewriteCond %{REQUEST_URI} ^/$ # 内部重写到子目录,不修改浏览器URL RewriteRule ^ /gmcomputers/ [L,DPI]
关键修改说明:
- 移除
R=301:这个标记会触发浏览器跳转,地址栏URL随之改变;去掉后Apache会在服务器内部加载子目录内容,浏览器完全感知不到。 - 保留
RewriteCond %{REQUEST_URI} ^/$:确保仅处理根目录的请求,不会干扰根目录下其他网站的正常访问。 [L,DPI]:L表示这是最后执行的规则,避免后续规则干扰;DPI用来正确处理路径信息,防止子目录内的链接出现路径错误。
测试注意事项:
- 先清除浏览器缓存:之前的301重定向会被浏览器缓存,直接测试可能看不到效果。
- 检查子目录的.htaccess:如果
/gmcomputers/下有自己的.htaccess,确保里面的规则不会和根目录的规则冲突。 - 规则顺序:把这段代码放在根目录.htaccess的最前面,避免被其他Rewrite规则覆盖。
内容的提问来源于stack exchange,提问作者Mark de Wet
相关产品推荐
相关产品推荐

