パーマリンク設定について
永らくありがとうございました › フォーラム › 使い方全般 › パーマリンク設定について
-
投稿者投稿
-
2009 年 12 月 25 日 11:39 AM #2629
匿名
ゲストはじめて質問いたします。
XPressME Integration Kitを使わさせていただいております。
タイトルの通りなのですが、2.1.4まではパーマリンク設定が効いていたのですが、2.2.0に上げたとたんに効かなくなってしまいました。
これは、バグなのでしょうか?どうすればいいのでしょうか?
よろしくお願いいたします。
2009 年 12 月 25 日 1:18 PM #3027toemon
キーマスターblueboxxさんこんにちは、ご利用ありがとうございます。
2.1.4まではパーマリンク設定が効いていたのですが、2.2.0に上げたとたんに効かなくなってしまいました。
当方のテストサイトでは問題なさそうですが…
パーマリンク設定が効かないとは、
記事タイトルのリンクがパーマリンクにならず ?p=** とかの表示になっているということでしょうか?
症状が理解できずなんとも言い難いですが、もし、リンクには正しいパーマリンクが表示されるにも関わらず
「要求された URL は本サーバでは見つかりませんでした。 参照元ページのリンクが間違っているか、古くなってしまっているようです。 ページの著者にこのエラーをお知らせ下さい。 」
などの表示が行われポストが表示されないのであれば、
モジュールトップの.htaccessが無いか、設定したパーマリンクが反映されていないことが考えられます。
いずれにせよ、一度、WordPressのパーマリンク設定で「変更を保存」を実行してもらえないでしょうか?
パーマリンク「変更を保存」で駄目な場合は、
システム情報をレポート形式で提示
パーマリンクの設定内容の提示
モジュールトップの.htaccess内容の提示
をお願いいたします。
2009 年 12 月 26 日 12:31 AM #3028匿名
ゲスト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
申し訳ありませんが、よろしくお願いいたします。
2009 年 12 月 26 日 3:51 AM #3029toemon
キーマスター「あなたの .htaccess が書き込み可能ならこの操作は自動的に行われますが…」
というのが出てきてしまいます。
試しに、.htaccessをアップロードし直したりしたのですが、.htaccessが存在しているのに.htaccessを認識していない感じでした。
パーミッション644です。
.htaccessの探しに行く場所を誤っているのかな?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /xxxx/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /xxxx/index.php [L]
</IfModule>
のxxxkの部分ですが
# 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
のように「modules/モジュールディレクトリ名」になっていると考えてもよいでしょうか?(モジュールのURLをRewriteRuleなどで変更していない?)
2009 年 12 月 26 日 4:14 AM #3030匿名
ゲストtoemon様
ご返答ありがとうございます。
大変申し訳ありませんでしたm(_ _)m
modulesを消す設定をしておりまして、「一般設定」の「ブログのアドレス (URL)」を変更していたために起きた現象でした。
お手を煩わせてしまい、大変申しわけありませんでした。
フォローして頂き誠にありがとうございました。
2009 年 12 月 26 日 7:48 AM #3031toemon
キーマスターmodulesを消す設定をしておりまして、「一般設定」の「ブログのアドレス (URL)」を変更していたために起きた現象でした。
の場合は、WordPress のアドレスをブログのアドレスに合わせる{共にmodulesを消す設定のURLにする。}と、うまくいくでしょう。
以下に.htaccessの場所を探す場合に利用している関数のコードを示します。
<code>function get_home_path() {<br /> $home = get_option( 'home' );<br /> $siteurl = get_option( 'siteurl' );<br /> if ( $home != '' && $home != $siteurl ) {<br /> $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */<br /> $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);<br /> $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);<br /> $home_path = trailingslashit( $home_path );<br /> } else {<br /> $home_path = ABSPATH;<br /> }<br /> <br /> return $home_path;<br /> }</code>
つまり、WordPress のアドレス (URL)とブログのアドレス (URL)が同じであればABSPATH(*1)が使われますが、今回のように、ブログのアドレス (URL)で間のmodulesが抜かれてしまった場合は、
$wp_path_rel_to_home = str_replace($home, ”, $siteurl); /* $siteurl – $home */
の部分がうまく機能せず、異なったディレクトリ位置を示してしまいます。
*1 ABSPATH
WordPress のルートディレクトリにあるwp_config.phpで
<code>/** Absolute path to the WordPress directory. */<br /> if ( !defined('ABSPATH') )<br /> define('ABSPATH', dirname(__FILE__) . '/');</code>
として設定されています。
-
投稿者投稿
- フォーラム「使い方全般」には新規投稿および返信を追加できません。