WordPressで日本語URLが大文字だと404。小文字はOK

このブログ、WordPressのカテゴリーなどに日本語が含まれていたりします。

ふと。。何気にブラウザのURLアドレスバーをコピーして。。

再度ペースト、カテゴリページを確認。。

404エラー?! なんで???


「%e3%81%a3%e3%81%bd%e3%81%84%e3%81%ae」 はアクセスできるけど

「%E3%81%A3%E3%81%BD%E3%81%84%E3%81%AE」 はダメ。

やばい。だめじゃん。

検索から来る場合、大文字に変換されていると思います。

つまり。。アクセスがあっても404エラーだということ。。

WordPressの日本語URLエンコードの修正

WordPressの日本語スラッグ対応

スラッグに日本語を入れると Not Found になる

修正します。まず、WordPressのカテゴリの日本語URLを大文字に変更。

1.テーマのfunctions.phpに以下を追加。

<?php
function percent_encode_capital_letter($uri) {
$uri = preg_replace_callback(‘/(%[0-9a-f]{2}?)+/’, create_function(‘$matches’,’return strtoupper($matches[0]);’), $uri);
return $uri;
}

add_filter(‘post_link’, ‘percent_encode_capital_letter’);
add_filter(‘page_link’, ‘percent_encode_capital_letter’);
add_filter(‘tag_link’, ‘percent_encode_capital_letter’);
add_filter(‘category_link’, ‘percent_encode_capital_letter’);
add_filter(‘preview_post_link’, ‘percent_encode_capital_letter’);
add_filter(‘get_the_guid’, ‘percent_encode_capital_letter’);
?>

2.大文字でも小文字でも両方表示できるように修正。

/wp-includes/class-wp.php

if ( preg_match(“#^$match#i“, $request_match, $matches) ||
preg_match(“#^$match#i“, urldecode($request_match), $matches) ) {

オプション”i”(大文字、小文字を区別しない)を追加する。。

 

ついでに。。「.htaccess」の古いURLからの転送設定を大文字に修正。

小文字になっていました。

 

でもWPバージョンアップなんかしたらまたファイル修正しないといけないのは

面倒だなぁ。。

 

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
Highslide for Wordpress Plugin