这是 WordPress 中的 .htaccess 代码。有人可以解释它是如何工作的吗?

Posted

技术标签:

【中文标题】这是 WordPress 中的 .htaccess 代码。有人可以解释它是如何工作的吗?【英文标题】:This is the .htaccess code in WordPress. Can someone explain how it works? 【发布时间】:2011-07-01 00:26:36 【问题描述】:

这是 WordPress 中永久链接的 .htaccess 代码。我不明白这是如何工作的。谁能解释一下?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>

我搜索了一下,发现-f-d 部分意思是赋予真实目录和文件更高的优先级。

那么^index\.php$ - [L]RewriteRule . /index.php [L] 是什么?

WordPress 如何仅用这个来处理类别、标签、页面等?

它发生在内部吗?如果是这样,我有兴趣学习如何在 PHP 中做到这一点。

谢谢

【问题讨论】:

【参考方案1】:

^index\.php$ - [L] 防止对index.php 的请求被重写,以避免不必要的文件系统检查。如果请求是针对 index.php 的,则指令不执行任何操作 - 并停止处理规则 [L]

这个块是一个规则,它说如果它不是一个真实的文件,也不是一个真实的目录,则将请求重新路由到index.php

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]

index.php 本身解释客户端请求的 URL(PHP 可以使用 $_SERVER['REQUEST_URI'] 看到请求的 URL)并调用正确的代码来呈现用户请求的页面。

【讨论】:

我注意到 wordpress 将 domain.com/index.php 重定向到 domain.com。如果我想在 PHP 中做类似的事情,我应该只使用 header 函数吗?我想知道有没有更好的方法(搜索引擎友好?更高效?)。 我看不出任何原因来自 Header 函数的 301 重定向不合适。理论上你可以调整你的 mod_rewrite 设置来做一个快速的 301 重定向,但这不会有太大的不同。 RewriteRule ^index\.php$ - [L]: 这不是多余的吗,因为index.php 确实是一个真实的文件(因此点击RewriteCond %REQUEST_FILENAME !-f)? 这就是我要说的。最初执行RewriteRule . /index.php [L] 时,我们没有得到一个现有的文件名吗?如果是这样,那么RewriteCond %REQUEST_FILENAME !-f 在第二次迭代中不会返回 false 吗?我没有看到无限循环修复,充其量是优化。我错过了什么?感谢您的帮助 @matpop 我同意你的看法。由于 index.php 是一个真实的文件并且它存在于根目录中,那么 RewriteRule ^index\.php$ - [L] 需要什么来避免内部循环?我同意不会有循环,我测试过并且没有发现问题。对于像 wordpress 这样价值十亿美元的公司来说,不应该有这个简单的错误,我提出这个问题只是为了寻找答案,有人发现我们缺少的东西吗?

以上是关于这是 WordPress 中的 .htaccess 代码。有人可以解释它是如何工作的吗?的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress中的固定链接 - 找不到页面

子域“m”。与 WordPress 和。 htaccess(在 htaccess 中的重写规则冲突。)

根目录中的 Wordpress htaccess 覆盖子域中的 htaccess。子域应用程序现在无法运行

WordPress 中的 .htaccess 错误:此处不允许重写引擎

通过.htaccess利用WordPress中的浏览器缓存

使用.htaccess文件增加wordpress中的上载限制