请求修正.htaccess重写规则:实现两类URL伪静态转换
修正后的.htaccess代码
RewriteEngine On # 例外规则:直接放行exception.php,不做重写 RewriteRule ^exception\.php$ - [L] # 处理第二类URL:把/news/xxx映射到articles.php?article=xxx RewriteRule ^news/([^/]+)$ articles.php?article=$1 [L] # 处理第一类URL:把/xxx映射到/xxx.php(仅当对应的.php文件真实存在时生效) RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^([^/]+)$ $1.php [L]
规则说明
- 先开启重写引擎
RewriteEngine On,这是所有重写规则的运行前提。 - 例外规则放在最前端,用
[L]标记终止后续规则处理,确保exception.php不会被任何重写逻辑干扰。 - 第二类URL规则优先执行,因为它匹配带
news/前缀的路径,避免和第一类单段路径规则冲突。规则会捕获news/后的内容作为article参数,传递给真实的articles.php文件。 - 第一类规则增加了
RewriteCond判断,只有当对应的.php文件真实存在时才会执行重写,避免请求不存在的路径时出现错误跳转。
内容的提问来源于stack exchange,提问作者Péter Gergő
相关产品推荐
相关产品推荐

