Wordpress 如何将特定htaccess转换为全局httpd.conf

Wordpress 如何将特定htaccess转换为全局httpd.conf,wordpress,apache,.htaccess,Wordpress,Apache,.htaccess,我怎样才能转换 RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 在全局httpd.conf配置中。一个紧迫的问题是httpd.conf中不允许重写基本规则。但要知道如何重写这些规则,了解这些规则的作用可能会有所帮助 你是

我怎样才能转换

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
在全局httpd.conf配置中。一个紧迫的问题是httpd.conf中不允许重写基本规则。但要知道如何重写这些规则,了解这些规则的作用可能会有所帮助

你是干什么的?这是否意味着它将接受任何传入的URL并删除服务器名称和URL中最后一项之间的所有内容并将其删除?就是变成什么?? 我认为第二条规则意味着像这样的URL保持不变

第三行和第四行检查请求的文件名是否作为文件或目录存在,如果存在,则忽略以下重写规则


在最后一行中,重写规则令人困惑,它似乎想要在任何单个字符上匹配,而只是在单个字符上匹配(为什么不是^(.*)),如果以某种方式匹配,然后将整行重写为/index.php,它似乎知道如何处理的URL,因为它仍然包含最初提交的内容。

RewriteBase:您可以在httpd.conf中使用RewriteBase。就在
块下面。看看文档,这里有一个例子

这是在目录结构的某个.htaccess文件中。它强制重写引擎从
/
启动,而不是从找到.htaccess文件的目录启动


第二行:如果该文件不是现有文件,则您是正确的


第三行和第四行:如果它不是现有目录,则您是正确的


最后一行:如果请求不是现有文件,也不是现有目录,并且长度为1个字符==>无论字符是什么(与匹配),都返回index.php

我同意你的看法,它应该是
^(.*)$
,以匹配任何不是现有文件目录的内容。仅仅一个点是相当有限制的,尽管在你的特定网站上可能有其背后的逻辑


有关

  • :匹配任何字符
  • +
    :匹配1个或多个。因此,任何数量的字符,不包括0个字符
  • *
    :匹配0或更多。所以可以是任意数量的字符,包括0个字符

有一个非常好的官方文档,详细解释了这些指令的作用:它实际上对于回答我的特定问题是毫无用处的。大概目标是获取虚拟URL,将其重写为index.php,代码在内部将虚拟URL放入全局变量中并对其进行处理。.htaccess文件位于根目录下,因此不清楚为什么需要一个重写库。那么,它会不会什么都不做呢?如果行重写了规则/php只匹配一个单独的字符,不清楚什么时候匹配任何字符,但很明显这不是实际情况。几乎所有的东西都是一样的。它在上不匹配,也不清楚为什么。我知道为什么它与wp-login.php不匹配。这是一个真实的文件。