Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess url使用字符串变量重写id_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

.htaccess url使用字符串变量重写id

.htaccess url使用字符串变量重写id,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,正在尝试找出如何重写此url客户端 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] 但是如何用post title slug替换id字符串?您可以添加指向索引文件的规则,如: RewriteRule ^(.*)$ index.php?url=$1 在该文件中

正在尝试找出如何重写此url客户端

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]

但是如何用post title slug替换id字符串?

您可以添加指向索引文件的规则,如:

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

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

您可以添加进入索引文件的规则,如:

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

在该文件中,根据标题,您可以显示请求的帖子。Web服务器本身没有这种区别,无法将您的“唯一文本标识符”转换为数据库id。因此,仅由Web服务器评估的.htaccess规则对您没有帮助。但是如何在所有这些web应用程序上实现呢?通常,这种翻译是由Joomla/Wordpress自己完成的,只要“如何获得女士”文本在整个系统/数据库中是已知的和唯一的,它就可以工作。

Web服务器本身没有这种区别,不能从您的“唯一文本标识符”进行翻译因此,仅由Web服务器评估的.htaccess规则对您没有帮助。但是如何在所有这些web应用程序上实现呢?通常这种翻译是由Joomla/Wordpress自己完成的,只要“如何获得女士”文本在整个系统/数据库中是已知的和唯一的,它就可以工作。

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

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

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


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

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

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

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


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

它如何知道如何将“How to get the ladies”映射到123?这是我的问题。我知道像wordpress这样的博客给了你这个选择。不知道他们是使用mod rewrite还是简单地构造url以包含标题slug…正如答案中所解释的,不,他们不使用mod_rewrite。好吧,我意识到这是rewrite+php的组合(对我来说)。找到这篇文章…认为这是我想做的,但无法弥合差距,并找出我需要做什么。。。它如何知道如何将“如何让女士们”映射到123?好吧,这是我的问题。我知道像wordpress这样的博客给了你这个选择。不知道他们是使用mod rewrite还是简单地构造url以包含标题slug…正如答案中所解释的,不,他们不使用mod_rewrite。好吧,我意识到这是rewrite+php的组合(对我来说)。找到这篇文章…认为这是我想做的,但无法弥合差距,并找出我需要做什么。。。当然,Joomla/Wordpress只是一些例子——重点是它是在web应用程序(PHP/Python/Perl等)中完成的,而不是在.htaccess中完成的。Joomla/Wordpress当然只是一些例子——重点是它是在web应用程序(PHP/Python/Perl等)中完成的,而不是在.htaccess中完成的。