.htaccess 文件 Wordpress RewriteRule Block Rearrange to the top
.htaccess file Wordpress RewriteRule Block Rearrange to the top
我在尝试通过休息访问我的网站时遇到问题(401 错误)API。我将 .htaccess 文件中的 Wordpress 块移到了顶部,现在我的网站可以访问了。这是我的 .htaccess 文件中的第一个块?
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
我需要像这样合并两行 RewriteRule 行吗?它在功能上有什么改变吗?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
在我进行任何更改之前,.htaccess 文件中的第一个块是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
因此,通过移动“Wordpress 块”,它只会添加一行 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Do I need to combine the two lines
您当然“不需要”将这两行结合起来。
如果您这样做,访问您的休息区可能没有任何影响API。
单个组合指令
正如您所做的那样,通过组合这两个指令,意味着 HTTP_AUTHORIZATION
env var(用于帮助进行 HTTP 身份验证)将仅在通过 WordPress(包括主页)路由的请求上设置.并且(在 Apache*1 上)REDIRECT_HTTP_AUTHORIZATION
env var 将 not 生成时请求被重写到 WordPress 前端控制器(index.php
),即。主页以外的页面请求。尽管我很确定 WordPress 无论如何都不会利用这一点。 HTTP_AUTHORIZATION
env var 不会像以前那样在对静态资源(图像、CSS、JS 等)的请求上设置。
两个独立的指令
对于两个单独的指令,与原始代码一样,HTTP_AUTHORIZATION
env var 是在每个请求上设置的,包括对静态资源的请求。 (但通常情况下,这是多余的。)并且(在 Apache*1 上)请求时将生成 REDIRECT_HTTP_AUTHORIZATION
env var重写为 WordPress 前端控制器 (index.php
),即。主页以外的页面请求。
(*1 与 LiteSpeed 相反,无论如何都不会生成 REDIRECT_...
形式的环境变量。)
I moved the Wordpress block in my .htaccess
file to the top and now my website is reachable.
这不一定是正确的做法。通常,WordPress 代码块(前端控制器)应该出现在文件的后面。可能只有一个冲突规则应该被“修改”或者可能移动到 在 WordPress 代码块之后。但是将这些指令移动到 WordPress 代码块之后可能会有效地完全“禁用”这些规则。
更新:
Prior to me moving the "Wordpress" block to the top, this is what the
first block had:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
该代码块只是 WordPress 代码块的错误“副本”(减去 HTTP_AUTHORIZATION
变量),应该完全删除!
我在尝试通过休息访问我的网站时遇到问题(401 错误)API。我将 .htaccess 文件中的 Wordpress 块移到了顶部,现在我的网站可以访问了。这是我的 .htaccess 文件中的第一个块?
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
我需要像这样合并两行 RewriteRule 行吗?它在功能上有什么改变吗?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
在我进行任何更改之前,.htaccess 文件中的第一个块是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
因此,通过移动“Wordpress 块”,它只会添加一行 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Do I need to combine the two lines
您当然“不需要”将这两行结合起来。
如果您这样做,访问您的休息区可能没有任何影响API。
单个组合指令
正如您所做的那样,通过组合这两个指令,意味着 HTTP_AUTHORIZATION
env var(用于帮助进行 HTTP 身份验证)将仅在通过 WordPress(包括主页)路由的请求上设置.并且(在 Apache*1 上)REDIRECT_HTTP_AUTHORIZATION
env var 将 not 生成时请求被重写到 WordPress 前端控制器(index.php
),即。主页以外的页面请求。尽管我很确定 WordPress 无论如何都不会利用这一点。 HTTP_AUTHORIZATION
env var 不会像以前那样在对静态资源(图像、CSS、JS 等)的请求上设置。
两个独立的指令
对于两个单独的指令,与原始代码一样,HTTP_AUTHORIZATION
env var 是在每个请求上设置的,包括对静态资源的请求。 (但通常情况下,这是多余的。)并且(在 Apache*1 上)请求时将生成 REDIRECT_HTTP_AUTHORIZATION
env var重写为 WordPress 前端控制器 (index.php
),即。主页以外的页面请求。
(*1 与 LiteSpeed 相反,无论如何都不会生成 REDIRECT_...
形式的环境变量。)
I moved the Wordpress block in my
.htaccess
file to the top and now my website is reachable.
这不一定是正确的做法。通常,WordPress 代码块(前端控制器)应该出现在文件的后面。可能只有一个冲突规则应该被“修改”或者可能移动到 在 WordPress 代码块之后。但是将这些指令移动到 WordPress 代码块之后可能会有效地完全“禁用”这些规则。
更新:
Prior to me moving the "Wordpress" block to the top, this is what the first block had:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
该代码块只是 WordPress 代码块的错误“副本”(减去 HTTP_AUTHORIZATION
变量),应该完全删除!