XPressME Integration Kit Forum

フォーラム

パーマリンク設定について (6件の投稿)

  1. blueboxx
    メンバー
    8ヶ月前の投稿 #

    はじめて質問いたします。
    XPressME Integration Kitを使わさせていただいております。
    タイトルの通りなのですが、2.1.4まではパーマリンク設定が効いていたのですが、2.2.0に上げたとたんに効かなくなってしまいました。
    これは、バグなのでしょうか?どうすればいいのでしょうか?
    よろしくお願いいたします。

  2. toemon
    キーマスター
    8ヶ月前の投稿 #

    blueboxxさんこんにちは、ご利用ありがとうございます。

    2.1.4まではパーマリンク設定が効いていたのですが、2.2.0に上げたとたんに効かなくなってしまいました。

    当方のテストサイトでは問題なさそうですが...

    パーマリンク設定が効かないとは、
    記事タイトルのリンクがパーマリンクにならず ?p=** とかの表示になっているということでしょうか?

    症状が理解できずなんとも言い難いですが、もし、リンクには正しいパーマリンクが表示されるにも関わらず

    「要求された URL は本サーバでは見つかりませんでした。 参照元ページのリンクが間違っているか、古くなってしまっているようです。 ページの著者にこのエラーをお知らせ下さい。 」

    などの表示が行われポストが表示されないのであれば、
    モジュールトップの.htaccessが無いか、設定したパーマリンクが反映されていないことが考えられます。

    いずれにせよ、一度、WordPressのパーマリンク設定で「変更を保存」を実行してもらえないでしょうか?

    パーマリンク「変更を保存」で駄目な場合は、
    システム情報をレポート形式で提示
    パーマリンクの設定内容の提示
    モジュールトップの.htaccess内容の提示
    をお願いいたします。

  3. blueboxx
    メンバー
    8ヶ月前の投稿 #

    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

    申し訳ありませんが、よろしくお願いいたします。

  4. toemon
    キーマスター
    8ヶ月前の投稿 #

    「あなたの .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などで変更していない?)

  5. blueboxx
    メンバー
    8ヶ月前の投稿 #

    toemon様

    ご返答ありがとうございます。
    大変申し訳ありませんでしたm(_ _)m
    modulesを消す設定をしておりまして、「一般設定」の「ブログのアドレス (URL)」を変更していたために起きた現象でした。
    お手を煩わせてしまい、大変申しわけありませんでした。
    フォローして頂き誠にありがとうございました。

  6. toemon
    キーマスター
    8ヶ月前の投稿 #

    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__) . '/');

    として設定されています。

返信

ログイン しなければ投稿できません。

About this Topic

Tags

タグ: