试图弄清楚如何重写这个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字符串?
答案 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文件中。