サポート » 使い方全般 » パーマリンク設定で、.htaccess が書き込み可能なら~が表示された時は

  • 解決済 ゆきんこ

    (@kitaguni_ht)


    WPMLで、英語版を作成する時に「親」設定に英語版の固定ページが選択肢に一つも表示されない。スラッグを変更すると、sample-2など番号がつくページがある。など、正常に動作しておらず、いろいろ設定を見直していました。

    パーマリンク設定を見たところ、

    ”.htaccess が書き込み可能ならこの操作は自動的に行われますが、
    そうでない場合は .htaccess ファイルに mod_rewrite ルールを書き込む必要があります。
    以下のフィールドをクリックし、CTRL + a ですべてのコードを選択してください。”
    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    というメッセージが表示されていました。

    リンクが404になったりはしていません。WPMLを入れる前はこのメッセージは表示されていなかったと思いました。
    WPMLの設定で、URLのフォーマットをhttp://sample.net/sample/en/ か http://sample.net/sample?lang=enにするかの選択で、リライトが必要になってこのメッセ―ジが表示されたのかな?と思います。

    現在、WPは専用ディレクトリにインストールし、トップURLの変更をしています。

    www--+--WP--+--index.php
         |      |
         |      +--.htaccess①
         |
         +--.htaccess②

    .htaccess①、.htaccess②ともに、

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /xxxx/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteRule . /xxxx/index.php [L]
    RewriteRule . index.php [L]
    </IfModule>
    
    # END WordPress

    が既に記載してあります。

    現在のパーマリンク設定 カスタム構造

    /%year%/%monthnum%/news-%post_id%/

    これらの変更をするのは、.htaccess②だけでいいのでしょうか?
    それから、修正でしょうか?それとも下に追記でしょうか?
    一度.htaccess②の修正を試したのですが、このメッセージは消えませんでした。もしかして消えないものなのでしょうか?

    WPMLの不具合も解消されなかったようでした(これはまた別の問題かもしれませんが)。
    .htaccessを変更したあと、もう一度パーマリンク設定やWPMLのURLフォーマットを空保存する必要などあるのでしょうか?

    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 現在の .htaccess は、たぶん、WP ディレクトリにインストールして、パーマリンクを設定したときにできたものを利用していると思いますが、ちがいますか? その後、ホームをドキュメントルートに変更して、WP 以下の .htaccess を www の下にコピーしたように見えます。そのとき、

    #RewriteRule . /xxxx/index.php [L]

    の行をコメントアウトして、次の行を追加したんじゃないかなぁ、と想像できます。そして、その後、ファイルのパーミッションを変更したのではないでしょうか。ということは、現在、

    www--+--WP--+--index.php
         |      |
         |      +--.htaccess(1)
         |
         +--.htaccess(2)
         |
         +--index.php

    のように、www 以下に index.php があって、

    require('./WP/wp-blog-header.php');

    みたいになっているのはずです。

    この前提でいくと、.htaccess(2) の内容を、WordPress が出しているメッセージの通りにして(RewriteBase を ‘/’ に変えるだけですが)、内容が同じなら .htaccess(1) は必要ありません。

    ですが… kitaguni_ht さんが最初に引用したメッセージは消えません。WordPress は、.htaccess が writable(書込み可)かどうかだけを判断しているので、内容は見ていないのです。

    is_writable($home_path . '.htaccess')

    もう、これはしょうがないので、お客さんに見せたくないということなら、ちゃんと説明してあげるか、JavaScript や stylesheet で消しちゃうしかないと思います。

    WPML については、ライセンスを持っていないのでコメントできません。

    kjmtshさん>
    すっかり返信が遅くなってしまいまして、申し訳ありません!!!(>_<;)

    やはり、.htaccess(1)も編集しなくて良いのですね。
    WPをインストール後、wp-login.phpはアクセスできるのに、wp-admin.phpが表示されなかった時に作成した.htaccessファイルでした。(.htaccessファイルが無かったので、作成したところ無事表示できました)

    タイミングがかぶっただけで、WPMLをインストールしたからではなく、パーミッションの変更をお願いしていたのでそのせいで表示されたのだと思われます。
    最初の時点でパーマリンク設定を変更したときに、きちんと書き換えは行われていたようですし、メッセージは消えないとのことですので、こちらはおそらく問題ないと思います。

    WPMLの不具合に関しては、こちらのおバカな凡ミスだったようです。
    正常に動作したので、パーマリンク設定は関係ないと思います。

    >英語版を作成する時に「親」設定に英語版の固定ページが選択肢に一つも表示されない。
    これは、固定ページの「ステータス」が「下書き」状態であったので、表示されないだけでした・・・。

    >スラッグを変更すると、sample-2など番号がつくページがある。
    こちらも、固定ページの「ステータス」が「下書き」状態であると、スラッグの変更ができないだけでした。
    「公開」状態でないと、日本語版と同期されない?ようです。
    「公開」状態にしてから、スラッグの変更をしたところ、日本語版と同じスラッグ名に変更できました。

    このような凡ミスでお恥ずかしいです(;´Д`)
    いつもお力をお貸しいただき、ありがとうございます!
    解決済みにさせていただきます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「パーマリンク設定で、.htaccess が書き込み可能なら~が表示された時は」には新たに返信することはできません。