.htaccess配置:除指定目录外将所有URL重写到index.php
优化你的URL重写规则
嘿,你的现有解决方案已经能正确实现需求了——把所有请求转发到index.php,同时排除/src路径和index.php本身。不过确实有更简洁的写法,能减少重复的条件判断,让规则更紧凑易读:
更优实现方案
RewriteEngine On RewriteCond %{REQUEST_URI} !^/(src|index\.php)$ RewriteRule ^ /index.php [L]
为什么这个写法更好?
- 把两个
RewriteCond合并成一个,用正则的|(或操作符)同时匹配两个需要排除的路径,让代码更简洁易读 - 逻辑和你的原规则完全一致:只要请求URI不是以
/src或/index.php开头,就会被转发到index.php - 同样能覆盖
/src下的所有子路径(比如/src/assets/js/main.js这类请求也会被排除在外),和你原来的规则效果完全相同
如果追求极致简洁,其实还可以把index.php的排除逻辑整合到RewriteRule里,但上面的写法已经在可读性和简洁性之间取得了很好的平衡,而且Apache重写引擎处理起来效率和你的原规则几乎没有差异。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

