我被要求开发一个mod_rewrite来改变
http://www.example.com/health-and-fitness-tips/999/
进入
http://www.example.com/health-and-fitness-tips/how-do-I-lose-10kg-in-12-weeks/
其中999
是id
而How do I lose 10kg in 12 weeks
是title
。
这是否可以远程实现,或者mod_rewrite仅用于更改
之类的内容 http://localhost/siteengine/products.php?id=123
进入
http://localhost/products/123
???
答案 0 :(得分:3)
这实际上不是AFAIK(动态方面,没有额外的模块)。您需要做的第一步是将所有链接转换为SEO,然后您需要将标题作为参数提供给页面。
示例:
<a href=/health-and-fitness-tips/how-do-I-lose/>
Condition: ^/health-and-fitness-tips/(.*)$/
Rewrite to: ^/page.php?title=$1
其中一些是伪代码,但在page.php中解析$ _GET ['title']并根据固定链接查询数据库。
您还需要为每个永久链接的URI设置301,这样搜索引擎就不会在您完成此操作后丢失。
答案 1 :(得分:2)
我猜测meder给出的答案是你正在寻找的那个,但从技术上讲,你可以创建一个静态映射文件来将一组标题字符串重定向到id,它不必执行外部{{1可执行文件:
prg
RewriteMap static-title-to-id txt:/tmp/title_to_id.txt
RewriteRule ^/health-and-fitness-tips/(.*)/ /health-and-fitness-tips/${static-title-to-id:$1}/ [L]
文件的内容如下:
/tmp/title_to_id.txt
答案 2 :(得分:1)
你可能这样做,但它会很混乱而且很迟钝。您仍然需要一个脚本来执行重写。
使用外部程序提供URL映射服务,查看RewriteMap指令的文档,特别是prg映射类型的位。
现在,请注意,我认为这是一个糟糕的坏主意,但它会让你完成这件事。
答案 3 :(得分:0)
Mod_rewrite只是将正则表达式应用于URL,因此无法从Title或vai中获取ID(据我所知)。