使用IDN域保存管理设置时出现Wordpress错误

时间:2013-12-16 07:45:06

标签: php azure azure-web-sites idn

我在Azure网站上创建了一个新的wordpress网站,这次是使用IDN Domain。我使用punycode表示在管理员页面中配置了域:

Wordpress网址:http://xn--sandraeiaki-8db.com 网站网址:http://xn--sandraeiaki-8db.com

除了从管理中的worpress设置页面保存设置外,一切正常。成功保存设置后,wordpress尝试重定向回设置页面,但不知何故重定向会更改域名,而不是重定向回http://xn--sandraeiaki-8db.com重定向到http://xn--sandraeiaki-bra36d.com/

我得到的唯一线索是,http://xn--sandraeiaki-bra36d.com/是http://sandraeiãrigeaki.com/的punycode表示,所以看起来wordpress在这里使用无效编码而不是UTF-8用于重定向回到设置页面。

更新

我可以在wordpress options.php文件中看到它在成功保存更改后尝试重定向:

/**
* Redirect back to the settings page that was submitted
*/
$goback = add_query_arg( 'settings-updated', 'true',  wp_get_referer() );
wp_redirect( $goback );
exit;

更新2 在与 soulseekah 进行聊天会话后,我们将问题追溯到Azure上IIS设置的位置值,创建一个简单的php页面,更改位置标头,重定向失败:

<?php header( 'Location: /' ); exit; ?>

检查位置标头值,表明它是用ASCII而不是UTF-8编码的:

  

地点:sandraeiñaki.com

更新3

经过一些测试后,它只会在header()php函数传递相对位置url值时发生,通过使用punycode域编码或utf-8编码将位置值设置为绝对uri解决而没有问题。

我通过改变wordpress重定向功能进行了临时修复,现在它只设置了绝对的uris,并且似乎正在工作。

但是,我如何能永久修复这种行为?

0 个答案:

没有答案