首页 > 解决方案 > Wordpress admin-ajax.php 适用于 localhost 但不适用于服务器

问题描述

我正在使用 ajax 过滤 WordPress 中的自定义帖子类型。在我的本地主机(xampp)上,一切正常并且运行良好,过滤并显示适当的帖子。

到目前为止,我已经重建了整个站点以验证我的核心文件是否完整。我检查了数据库以确保我的 wp-options home 和 sit url 设置正确。我已经在 http 和 https 中尝试过,并重新保存了永久链接。

我还联系了我的托管服务提供商 (inMotion) 以确认我不需要做任何事情来在 WordPress 上启用 ajax。我还有另一个站点在同一台服务器上运行,它使用 ajax 没有问题。

本质上,可能是什么原因导致“$home_url/wp-admin/admin-ajax.php?grade-filter=&department-filter=+&search=&action=coursefilter”

抛出 GET 400 错误?

标签: ajaxwordpress

解决方案


可能有几个原因,但最常见的原因是没有设置漂亮的永久链接。

转到Settings > Permalinks并启用漂亮的永久链接结构并点击Save。之后确保有.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

如果您正在运行 nginx Web 服务器,Wordpress2请为域启用模式,然后将其添加到您的.conf文件中:

location / {
            try_files $uri $uri/ /index.php?$args; 
}

在官方 WordPress 文档中阅读更多信息:https ://codex.wordpress.org/Using_Permalinks

[更新]

根据您提供的信息,我可以假设自迁移以来唯一发生变化的是home_url/和服务器端软件,例如Web 服务器PHP

我建议您仔细检查这些差异,用新的域 URL 替换旧 URL,并确保该 URL 没有插件或其他脚本重新路由请求。


推荐阅读