Mod_rewrite澄清问题。仅适用于动态网址?

时间:2009-10-04 05:01:38

标签: mod-rewrite

我被要求开发一个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/

其中999idHow do I lose 10kg in 12 weekstitle

这是否可以远程实现,或者mod_rewrite仅用于更改

之类的内容

http://localhost/siteengine/products.php?id=123

进入

http://localhost/products/123

???

4 个答案:

答案 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(据我所知)。