填写您的邮件地址,订阅我们的精彩内容:

wordpress页面中文网址404

647

今天突然发现,后台建立的wordpress独立页面使用中文作为URI的时候,就会出现404,而当使用英文别名作为网址的时候确能正常访问。于是我利用其它的博客创建了一篇同为中文别名的页面,却也能访问到。显然,这是由于本站的主机、主题、插件、修改的系统文件的某一项导致这个问题,而其他网站正常。因此只能使用非正常手段来实现正常访问了。

通过摸索,最终找到了下面这段代码:

$pagetitle = str_replace('/','',urldecode($_SERVER["REQUEST_URI"]));
$pageobject = get_page_by_title($pagetitle);
if($pageobject)$wp_query = new WP_Query("page_id={$pageobject->ID}");

这段代码的思路非常清晰,即第一步获取网址URL段,并做简单的处理,使之留下中文内容。第二步用这个URI段去获取页面,如果能够获取到,执行第三步。第三步即关键,如果这个中文的URI段是一个页面,那么执行$wp_query = new WP_Query("page_id={$pageobject->ID}");,它将重新初始化$wp_query,使这个URL对应一个新的页面,即不是404,而指向了标题和URI相同的页面。

注意:如果你的URI是“/给我/留言/”,经过处理之后,它和“/给我留言/”等同,因此,你可以在第一步对URI做更为精细的处理,例如只去掉首尾的“/”即可。

下面我简单说几句