如何用.htaccess实现CSS/Images重定向,其余请求跳转至Pages目录
解决.htaccess中/css和/images路径的重定向问题
没问题,我来帮你调整.htaccess规则,完美实现你要的两个需求~你现在的核心问题是原来的规则会把所有非pages/的请求都转到pages目录下,包括/css和/images路径,所以我们需要先把这两个路径排除在外,让它们直接访问根目录下的对应文件夹。
直接修改你的.htaccess规则为下面这样就能搞定:
RewriteEngine on # 放行/css和/images开头的请求,直接访问根目录对应文件夹 RewriteRule ^(css|images)/ - [L] # 其余所有非pages目录的请求,跳转至pages目录 RewriteCond %{REQUEST_URI} !^/pages/ RewriteRule (.*) /pages/$1 [L]
规则细节解释:
第一条规则
RewriteRule ^(css|images)/ - [L]:^(css|images)/精确匹配以/css/或/images/开头的请求路径,确保只有这两个目录下的请求被放行-表示不对这个请求做任何重写操作,直接让Apache去访问对应路径的文件[L]是Last标志,意思是一旦匹配到这条规则,就停止执行后续的Rewrite规则,避免这些请求被后面的规则误转发到pages目录。
第二条规则调整了原有的条件判断:
- 把
RewriteCond %{REQUEST_URI} !pages/改成RewriteCond %{REQUEST_URI} !^/pages/,加上^和/是为了更精确地匹配以/pages/开头的路径,避免误排除那些文件名里包含pages的请求(比如如果有个mypages.php就不会被错误跳过)。 - 剩下的逻辑和你原来的一致,所有不符合上面排除条件、且不是访问pages目录的请求,都会被转发到
/pages/目录下。
- 把
这样调整后完全符合你的需求:
- 用户请求
/css/style.css会直接访问根目录的/css/style.css - 请求
/images/banner.jpg会直接访问根目录的/images/banner.jpg - 其他请求比如
/about/会被转发到/pages/about/index.php,请求/则会转到/pages/index.php
内容的提问来源于stack exchange,提问作者TrickMonkey
相关产品推荐
相关产品推荐

