如何通过.htaccess移除友好URL中的连字符实现重定向
解决Apache重写规则中替换URL连字符为空格的问题
修改后的.htaccess规则
# 循环替换URL中的连字符为空格,直到所有连字符处理完成 RewriteRule ^sales/([^-]*)-([^/]*)$ /sales/$1 $2 [N,DPI] # 匹配处理后的路径,传递参数到PHP脚本 RewriteRule ^sales/([^/]+)/?$ /my_products.php?name_computer=$1&new_page=1 [L,QSA]
规则说明
- 第一条规则:
- 匹配
sales/后包含连字符的路径,将第一个-替换为空格 [N]标志让Apache重复执行规则集,直到没有连字符可替换[DPI]标志防止Apache将替换后的空格解析为路径信息的一部分,避免错误
- 匹配
- 第二条规则:
- 匹配处理后无连字符的路径,将
$1(即替换空格后的字符串)作为name_computer参数传递 [L]标志终止后续重写规则,[QSA]保留原有查询字符串(如果有的话)
- 匹配处理后无连字符的路径,将
注意事项
- 确保Apache启用了
mod_rewrite模块 - 移除原规则中的
RewriteCond %{REQUEST_URI} !\-,因为现在需要处理包含连字符的URL - 该规则支持多个连字符的替换,例如
super-cumputer-duper会被转换为super cumputer duper
内容的提问来源于stack exchange,提问作者kurole
相关产品推荐
相关产品推荐

