没有 www 前缀的 WP 站点无法正常工作

Posted

技术标签:

【中文标题】没有 www 前缀的 WP 站点无法正常工作【英文标题】:WP Site not working properly without www prefix 【发布时间】:2020-06-17 19:57:15 【问题描述】:

因此,根据我将 WP Settings URLs 设置为的内容,该站点要么只能在带有 www 前缀的情况下正常工作,要么在不带 www 前缀的情况下正常工作。

Working properly with www prefix

Without www prefix

Wordpress 地址和站点地址更改为不带 www 前缀的地址,问题是反过来。 (blendpunkt.at 有效,但 www.blendpunkt.at 无效)

【问题讨论】:

【参考方案1】:

您必须使用 Better Search Replace、Velvet Blues 更新 URL 和后端 WordPress 的常规设置(主页和站点 URL)等插件更新域才能使用不带 www 的变体。

https://wordpress.org/plugins/velvet-blues-update-urls/ https://wordpress.org/plugins/better-search-replace/

然后您必须将https://wwwblendpunkt.at 更新为https://blendpunkt.at 或相反。并检查是否有 http 变体。

您可能还想强制实施 https(使用 HSTS 或其他解决方案,另请参阅 https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess 和 https + www 重定向和强制 https 部分)。

请在使用这些插件之前创建完整备份

因为您可以看到 www.example.com 和 example.com 是不同的主机名并导致 CORS(跨域资源共享)错误。

PS:这个问题更适合https://wordpress.stackexchange.com/

【讨论】:

非常感谢我让它工作了!很抱歉使用了错误的论坛,我刚加入这里。【参考方案2】:

这似乎是一种解决方法,可能还有其他解决方案。但是按照您的要求,您是否使用带有或带有前缀的 url 对您来说并不重要,您只希望地图能够正常工作。因此,可以将所有不带 www 的请求重定向到带有 www 前缀的请求。

将您的 wordpress 和网站网址更改为您的域使用 www 前缀。

通过FTP访问wordpress的根目录下,应该有一个.htaccess文件。如果没有这样的文件,您可以创建一个(https://wordpress.org/support/article/htaccess/)。

在此文件中,就在您插入此代码的RewriteEngine on 下方:

RewriteCond %HTTPS off [OR]
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteCond %HTTP_HOST ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%REQUEST_URI [L,NE,R=301]

这样,所有没有 https 和/或没有 www 的请求都将被重定向到https://www。


另一种方式,在不影响整个网站的情况下,您可以为该特定页面创建重定向。将此代码 sn-p 调整为您的域并将其放入主题的 functions.php 文件中,或者如果您有多个重定向插件,则可以创建一个用于重定向的插件。

add_action( 'template_redirect', function() 
if( ( is_page('kontakt') ) ) 
        wp_redirect( 'https://www.yoursite.com/kontakt' );
        exit();
        
);

【讨论】:

以上是关于没有 www 前缀的 WP 站点无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

没有 www 的域不工作,但有 www 的域在 Azure 上工作

如何将非www站点重定向到www站点?

Localhost端口已更改,但未在WordPress站点中反映出来

将站点移到子文件夹后,WordPress无法登录到wp-admin

故障公告:IIS应用程序池停止工作造成博客站点无法访问

GatsbyImage 在生产站点中不起作用(从 WP CMS 中提取数据)