某些包含字符串 "admin-" 的请求出现 Wordpress 404 问题
Wordpress 404 issue with certain requests containg the string "admin-"
我有一个通常可用的 wordpress 页面,但今晚,当更新菜单不起作用时,我意识到有些东西不起作用。因此,在选择要添加到菜单的菜单项并点击“添加到菜单”按钮后,加载圆圈开始无限旋转。在开发人员控制台中检查更多详细信息后,我看到以下内容:
对 https://URL/wp-admin/-ajax.php
的 GET 请求导致 404。wp-admin/-ajax.php
在我看来不正确。实际上应该是wp-dmin/admin-ajax.php
。所以出于某种原因,admin
部分被剥离了。
我注意到加载一些 CSS 文件时出现相同的症状:
https://URL/wp-admin/-bar.min.js
也加载不出来。我认为这实际上应该是 admin-bar.min.js
.
我的 .htaccess 如下所示:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我也试过禁用所有插件都无济于事。
关于可能导致此问题的原因的任何提示?是什么导致从这些请求中删除 admin
部分?
编辑:
以下 apache-config 可能是原因吗?
RedirectMatch permanent /admin(.*) https://konferenzimforum.at/wp-admin/
为什么您的配置会出现这种情况
您从 Apache 配置文件中包含的配置行几乎可以肯定是此行为的根本原因。要理解 为什么 这是,我们必须更深入地研究行 实际上 的作用:
RedirectMatch permanent
很简单,这声明了一个基于 RegExp 模式匹配操作的 permanent
(HTTP 代码 301)重定向。
/admin(.*)
这个模式基本上告诉 Apache,“匹配包含 /admin
的任何 URL,后跟任何字符,任意次数,同时 捕获 text after 将 /admin
子字符串放入临时变量,</code>".</p>
<pre><code>https://konferenzimforum.at/wp-admin/
此字符串然后采用较早捕获的值并指示 Apache 将请求者重定向到 URL https://konferenzimforum.at/wp-admin/
,并附加较早捕获的值 到最后。
当这应用于您的示例中的 URL 时,wp-admin/admin-ajax.php
将变为 wp-admin/-ajax.php
,因为 /admin
触发匹配,然后使用 wp-admin/admin-ajax.php
的其余部分=61=] 在 </code> 中作为 post-fix 捕获,然后创建您在浏览器的开发工具中看到的不存在的 URLs。您可以使用 <a href="https://regex101.com/r/OO4qhK/1/" rel="nofollow noreferrer">this Regex101</a> 以更加直观和通俗易懂的方式展示此模式在实践中的工作原理。您会在该页面上注意到,在您的配置中删除的部分突出显示的颜色与 URL 中传递给重定向 URL 的部分不同的颜色。</p>
<hr />
<h3>如何解决</h3>
<p>有很多方法可以解决这个问题;最简单的可能是完全删除此规则(因为仅根据问题中的信息尚不清楚为什么首先需要此规则)。</p>
<p>另一种方法是确保只匹配对 <code>/admin/*
的请求,而不是任意匹配包含 /admin
序列的所有 URL(其中,作为您已经看到,可能会无意中将 文件 以 /admin
开头)作为目标,这似乎是您想要做的更多事情(重定向对 /admin
的请求到适当的 /wp-admin
资源):
RedirectMatch permanent /admin/(.*) https://konferenzimforum.at/wp-admin/
我有一个通常可用的 wordpress 页面,但今晚,当更新菜单不起作用时,我意识到有些东西不起作用。因此,在选择要添加到菜单的菜单项并点击“添加到菜单”按钮后,加载圆圈开始无限旋转。在开发人员控制台中检查更多详细信息后,我看到以下内容:
对 https://URL/wp-admin/-ajax.php
的 GET 请求导致 404。wp-admin/-ajax.php
在我看来不正确。实际上应该是wp-dmin/admin-ajax.php
。所以出于某种原因,admin
部分被剥离了。
我注意到加载一些 CSS 文件时出现相同的症状:
https://URL/wp-admin/-bar.min.js
也加载不出来。我认为这实际上应该是 admin-bar.min.js
.
我的 .htaccess 如下所示:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我也试过禁用所有插件都无济于事。
关于可能导致此问题的原因的任何提示?是什么导致从这些请求中删除 admin
部分?
编辑: 以下 apache-config 可能是原因吗?
RedirectMatch permanent /admin(.*) https://konferenzimforum.at/wp-admin/
为什么您的配置会出现这种情况
您从 Apache 配置文件中包含的配置行几乎可以肯定是此行为的根本原因。要理解 为什么 这是,我们必须更深入地研究行 实际上 的作用:
RedirectMatch permanent
很简单,这声明了一个基于 RegExp 模式匹配操作的 permanent
(HTTP 代码 301)重定向。
/admin(.*)
这个模式基本上告诉 Apache,“匹配包含 /admin
的任何 URL,后跟任何字符,任意次数,同时 捕获 text after 将 /admin
子字符串放入临时变量,</code>".</p>
<pre><code>https://konferenzimforum.at/wp-admin/
此字符串然后采用较早捕获的值并指示 Apache 将请求者重定向到 URL https://konferenzimforum.at/wp-admin/
,并附加较早捕获的值 到最后。
当这应用于您的示例中的 URL 时,wp-admin/admin-ajax.php
将变为 wp-admin/-ajax.php
,因为 /admin
触发匹配,然后使用 wp-admin/admin-ajax.php
的其余部分=61=] 在 </code> 中作为 post-fix 捕获,然后创建您在浏览器的开发工具中看到的不存在的 URLs。您可以使用 <a href="https://regex101.com/r/OO4qhK/1/" rel="nofollow noreferrer">this Regex101</a> 以更加直观和通俗易懂的方式展示此模式在实践中的工作原理。您会在该页面上注意到,在您的配置中删除的部分突出显示的颜色与 URL 中传递给重定向 URL 的部分不同的颜色。</p>
<hr />
<h3>如何解决</h3>
<p>有很多方法可以解决这个问题;最简单的可能是完全删除此规则(因为仅根据问题中的信息尚不清楚为什么首先需要此规则)。</p>
<p>另一种方法是确保只匹配对 <code>/admin/*
的请求,而不是任意匹配包含 /admin
序列的所有 URL(其中,作为您已经看到,可能会无意中将 文件 以 /admin
开头)作为目标,这似乎是您想要做的更多事情(重定向对 /admin
的请求到适当的 /wp-admin
资源):
RedirectMatch permanent /admin/(.*) https://konferenzimforum.at/wp-admin/