はじめて質問いたします。
XPressME Integration Kitを使わさせていただいております。
タイトルの通りなのですが、2.1.4まではパーマリンク設定が効いていたのですが、2.2.0に上げたとたんに効かなくなってしまいました。
これは、バグなのでしょうか?どうすればいいのでしょうか?
よろしくお願いいたします。
はじめて質問いたします。
XPressME Integration Kitを使わさせていただいております。
タイトルの通りなのですが、2.1.4まではパーマリンク設定が効いていたのですが、2.2.0に上げたとたんに効かなくなってしまいました。
これは、バグなのでしょうか?どうすればいいのでしょうか?
よろしくお願いいたします。
blueboxxさんこんにちは、ご利用ありがとうございます。
2.1.4まではパーマリンク設定が効いていたのですが、2.2.0に上げたとたんに効かなくなってしまいました。
当方のテストサイトでは問題なさそうですが...
パーマリンク設定が効かないとは、
記事タイトルのリンクがパーマリンクにならず ?p=** とかの表示になっているということでしょうか?
症状が理解できずなんとも言い難いですが、もし、リンクには正しいパーマリンクが表示されるにも関わらず
「要求された URL は本サーバでは見つかりませんでした。 参照元ページのリンクが間違っているか、古くなってしまっているようです。 ページの著者にこのエラーをお知らせ下さい。 」
などの表示が行われポストが表示されないのであれば、
モジュールトップの.htaccessが無いか、設定したパーマリンクが反映されていないことが考えられます。
いずれにせよ、一度、WordPressのパーマリンク設定で「変更を保存」を実行してもらえないでしょうか?
パーマリンク「変更を保存」で駄目な場合は、
システム情報をレポート形式で提示
パーマリンクの設定内容の提示
モジュールトップの.htaccess内容の提示
をお願いいたします。
toemon様
ご返答ありがとうございます。
申し訳ありません。省きすぎました。
パーマリンク設定をカスタム構造にしています。
/%post_id%.html
にして、変更を保存すると、.htaccessが出来ます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /xxxx/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /xxxx/index.php [L]
</IfModule>
ですが、サーバー上モジュールトップに.htaccessが存在し更新されますが、
「あなたの .htaccess が書き込み可能ならこの操作は自動的に行われますが…」
というのが出てきてしまいます。
試しに、.htaccessをアップロードし直したりしたのですが、.htaccessが存在しているのに.htaccessを認識していない感じでした。
パーミッション644です。
日付と投稿名・月と投稿名・数字ベースと試しましたが、同じような結果でした。
そこで、デフォルトに戻すと表示されます。
2.1.4に落とすと、全てが適用されます。
システム情報は以下の通りになります。
SERVER::Apache
PHP Version::5.2.8
libxml Version::2.6.26
MySQL Version::5.0.45
XOOPS Version::XOOPS Cube Legacy 2.1.7
XPressME Version::2.2
WordPress Version::2.9
WP DB Version::12329
safemode:OFF
register_globals:OFF
magic_quotes_gpc:ON
XML extension:ON
default memory_limit:128M
change memory_limit:128M
post_max_size:100M
upload_max_filesize:100M
display_errors:ON
MB extension:ON
mbstring.language:japanese
mbstring.encoding_translation:ON
mbstring.internal_encoding:UTF-8
mbstring.http_input:pass
mbstring.http_output:pass
mbstring.detect_order:auto
mbstring.substitute_character:none
mbstring.func_overload:OFF
申し訳ありませんが、よろしくお願いいたします。
「あなたの .htaccess が書き込み可能ならこの操作は自動的に行われますが…」
というのが出てきてしまいます。
試しに、.htaccessをアップロードし直したりしたのですが、.htaccessが存在しているのに.htaccessを認識していない感じでした。
パーミッション644です。
.htaccessの探しに行く場所を誤っているのかな?
のxxxkの部分ですが<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /xxxx/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /xxxx/index.php [L]
</IfModule>
のように「modules/モジュールディレクトリ名」になっていると考えてもよいでしょうか?(モジュールのURLをRewriteRuleなどで変更していない?)# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cube/modules/xp_trunk/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /cube/modules/xp_trunk/index.php [L]
</IfModule># END WordPress
toemon様
ご返答ありがとうございます。
大変申し訳ありませんでしたm(_ _)m
modulesを消す設定をしておりまして、「一般設定」の「ブログのアドレス (URL)」を変更していたために起きた現象でした。
お手を煩わせてしまい、大変申しわけありませんでした。
フォローして頂き誠にありがとうございました。
modulesを消す設定をしておりまして、「一般設定」の「ブログのアドレス (URL)」を変更していたために起きた現象でした。
の場合は、WordPress のアドレスをブログのアドレスに合わせる{共にmodulesを消す設定のURLにする。}と、うまくいくでしょう。
以下に.htaccessの場所を探す場合に利用している関数のコードを示します。
function get_home_path() {
$home = get_option( 'home' );
$siteurl = get_option( 'siteurl' );
if ( $home != '' && $home != $siteurl ) {
$wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
$pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);
$home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);
$home_path = trailingslashit( $home_path );
} else {
$home_path = ABSPATH;
}
return $home_path;
}
つまり、WordPress のアドレス (URL)とブログのアドレス (URL)が同じであればABSPATH(*1)が使われますが、今回のように、ブログのアドレス (URL)で間のmodulesが抜かれてしまった場合は、
$wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
の部分がうまく機能せず、異なったディレクトリ位置を示してしまいます。
*1 ABSPATH
WordPress のルートディレクトリにあるwp_config.phpで
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
として設定されています。
ログイン しなければ投稿できません。