这是 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 代码。有人可以解释它是如何工作的吗?的主要内容,如果未能解决你的问题,请参考以下文章
子域“m”。与 WordPress 和。 htaccess(在 htaccess 中的重写规则冲突。)
根目录中的 Wordpress htaccess 覆盖子域中的 htaccess。子域应用程序现在无法运行