【问题标题】:In what way does Wordpress rewrite page URLs?Wordpress 以什么方式重写页面 URL?
【发布时间】:2010-04-27 16:43:51
【问题描述】:

最近对Wordpress的post结构很感兴趣。

他们使用一个名为 (wp_posts) 的表,并在该表中保存了 3 个相关字段,例如:

post_title
post_name
guid 

很明显,他们将每个故事的标题保存在 post_title 字段中, 和 post_name 中的蛞蝓, 以及 guild 提交的帖子的完整网址。

但到底在哪里,他们会以浏览器中出现的方式重写这些 url:

http://localhost/wordpress/about/

这个没有htaccess规则!

我检查了rewrite.php,一英寸都看不懂?!

我需要创建类似的页面,我应该采取什么步骤!?

【问题讨论】:

  • 答案肯定在htaccess文件中。
  • pekka 我尊重你的回答,但在 httaccess 文件中只有一个指向 index.php 的重定向

标签: php mysql wordpress


【解决方案1】:

.htaccess 文件有一个重写指令,它将所有请求发送到 index.php。 rewrite 指令告诉 Web 服务器将原始请求传递到不同的位置而不进行重定向。所以,index.php 接收所有原始参数,包括请求路径(URL 中主机名后面的部分,例如“/about/”)。

当 index.php 收到请求时,它就像一个前端控制器,根据 URL 确定如何响应。

我从来没有看过 WordPress 的内部运作,所以我不能确切地说他们是如何实现它的,但是 index.php 的总体思路是这样的:

  1. 查看客户端使用的请求路径(例如“/about/”)
  2. 从请求路径(“about”)中提取 slug
  3. 查找哪个帖子有“关于”的标签
  4. 返回相应的帖子

【讨论】:

  • 好吧,如果你的假设是正确的,那么到底,wordpress 是如何理解在 htaccess 中发生重定向时重定向到 index.php 的页面?!
  • 就像我说的,所有请求都转到 index.php。
  • 我想我看到了混乱。这不是重定向,而是重写。 Web 服务器将所有原始请求参数传递给 index.php,包括请求路径。这能回答你的问题吗?
  • @jeff 我很困惑,如果你查看 wordpress 的 htaccess 文件,你会注意到,一个简单的重定向到 index.php。当它重定向到 index.php 时,它如何猜测有哪些参数。更新你的答案,如果你能用更简单的方式告诉我
  • 它不是重定向。这是一个重写。这些是不同的东西。我会更详细地更新答案。
【解决方案2】:

如果您检查 WP_Rewrite 课程,您的很多问题都会得到解释。

基本上,正如你们大多数人所说,.htaccess 只是将所有无法解析为服务器上实际文件或文件夹的 URL 重写为 index.php。

WordPress 将 URL 映射到重写规则列表,该列表是键和值的数组。键是正则表达式,值将back references映射到参数字符串。

例如,一个重写规则是;

category/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?category_name=$matches[1]&paged=$matches[2]'

然后WP 类和WP_Query 获取参数并处理请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多