如何使用.htaccess隐藏URL中的pages文件夹名称?
隐藏URL中pages文件夹名称的.htaccess配置方法
你需要实现的效果是:访问www.foo.com/page.html时,实际指向根目录下的pages/page.html,同时隐藏URL里的pages路径。当前你的.htaccess内容如下:
RewriteEngine on RewriteCond %{REQUEST_URI} !^pages/ RewriteRule ^(.*)$ /$1 [L]
修改后的.htaccess配置
替换成以下代码即可实现需求:
RewriteEngine On # 当请求的文件/目录不存在时,从pages文件夹加载对应资源 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /pages/$1 [L] # 重定向直接访问pages路径的请求到不带pages的URL RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/pages/(.*)\sHTTP/ RewriteRule ^pages/(.*)$ /$1 [R=301,L]
规则说明
- 第一组规则:先判断用户请求的文件或目录是否在根目录存在,如果不存在,就把请求转发到
pages文件夹下的对应资源。这样访问www.foo.com/page.html时,服务器会实际读取pages/page.html的内容。 - 第二组规则:如果用户直接输入了带
pages的URL(比如www.foo.com/pages/page.html),会触发301永久重定向到不带pages的版本,保证URL格式统一,同时利于SEO。
内容的提问来源于stack exchange,提问作者braxton
相关产品推荐
相关产品推荐

