url用字符串变量重写id

时间:2009-06-14 04:42:49

标签: .htaccess mod-rewrite url-rewriting

试图弄清楚如何重写这个url clientside

blog.com/post/how-to-get-the-ladies

将服务器端指向

blog.com/post.php?id=123

我知道怎么做:

blog.com/post/123

RewriteRule ^([^/]+)/?$ post.php?id=$1 [NC,L]

但是如何用帖子标题slug替换id字符串?

3 个答案:

答案 0 :(得分:2)

您可以添加转到索引文件的规则,如:

RewriteRule ^(.*)$ index.php?url=$1

并根据标题在此文件中,您可以显示该请求的帖子

答案 1 :(得分:2)

网络服务器本身没有区别,也无法从您的“唯一文本标识符”转换为数据库ID。因此,网络服务器单独评估.htaccess规则对您没有帮助。但是如何在所有这些网络应用程序上完成?通常这种翻译是由Joomla / Wordpress本身完成的,只有“how_to_get_the_ladies”文本在整个系统/数据库中是已知且唯一的,它才有效。

答案 2 :(得分:1)

我最近解决了类似的问题。我建议查看RewriteMap指令并使用“外部重写程序”。

RewriteRule在可维护性和健壮性方面存在一些很大的局限性。如果你还没有到达那里,你最终可能会。只能简单地重写简单的重写规则。

使用rewriteMap,您可以创建一个php或perl脚本,利用现有的代码库,并从代码中的本地化位置执行所有重写规则,这些规则很容易位于版本控制中。

我认为您需要访问httpd.conf(或vhost)配置文件,但是,RewriteMaps(或某些相关指令)不能放入.htaccess文件中。