サポート » マルチサイト » 3.0 マルチサイト サブディレクトリへのアクセスができない

  • 解決済 otom

    (@otom)



    宜しくお願い致します。

    WordPress 3.0 のマルチサイト機能(サブディレクトリ形式)をローカル環境(MAMP)でテストすべく各種設定を行った後、特権管理者よりサイトを新規追加したのですが、追加したサブディレクトリの表示、管理パネルへのアクセスが共にNot Found(404)のエラーになってしまいます。設定を再確認しキャシュやCookieのクリア等も行ったのですがどうしてもアクセスができない状況です。ちなみにルートディレクトリの表示、管理パネルへのアクセスは問題なくできております。

    wp-config.phpへのコードの追加、wp-content/blogs.dirフォルダの作成、可視環境にした上で、.htaccessファイルがなかった為、新規で作成してコードの追加を行い、再度確認してみました。
    他に行った事はネットワーク作成の際にエラーが出てしまった為、MAMPのポートを8888から80に変更しlocalhostで接続する様に変更しております。MAMP/conf/apache/httpd.confのListen 8888の箇所をListen 80に変更も同時に行いました。

    同様のケースで解決された方、詳しい方がおりましたらご教授頂ければ幸いです。

    実行環境:
    Mac OS 10.5.8
    WordPress 3.0.1
    MAMP 1.8.4
    Apache 2.0.63
    PHP 5.2.11
    MySQL 5.1.37

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • otomさん、こんにちは。

    WinユーザなのでMAMPのことは分からないのですが、
    .htaccessmod_write は動作するようになっていますか?
    ・主サイトの投稿の単体ページ(~/blog/2010/09/04/hello-world/ のようなURL)にもアクセスできていますか?

    bonoさん、こんばんは。
    どうぞ宜しくお願い致します。

    bonoさんのおっしゃる通り、まず主サイトの投稿の単体ページを確認してみたところ、
    問題の箇所と同様にエラーが出ておりました。
    恥ずかしながら、サーバ関連の知識が皆無ですので、.htaccess、mod_writeの動作確認の
    方法が分かりません。見当違いかもわかりませんが、”.htaccessの有効無効の指定方法”等で
    検索しつつ、httpd.confファイルのAllowOverrideの指定を確認してみました。

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>

    の箇所の他にも<Directory />〜</Directory>で囲まれた”phpMyAdminForPHP5″など
    のあたりもAllowOverride Allに変更し、MAMP再起動の後に確認してみましたが、やはり
    エラーになってしまいます。

    念の為、.htaccessファイルの方の記述は以下になります。

    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]

    根本的なところで、mod_writeや.htaccessの働きがどう云ったものなのかを理解できて
    おらず、大変恐縮かとは思いますが、引き続きご教授頂ければ幸いです。
    どうぞ宜しくお願い致します。

    otomさん、お疲れさまです。

    .htaccess の記述内容は問題なさそうです。

    Apacheの設定については、私の知識がない上にMAMPとWindowsのXAMPとでは違うかもしれないので、信頼性が低い情報になってしまいますが、よかったら以下を読んでみてください。
    (Macユーザの登場を待つ方が安全です。(^^;)

    1. .htaccessの改行コード
    2. mod_rewrite を正しく読み込んでいるか
    3. <Directory> ディレクティブでドキュメントルートを指定してみる

    ※ 何かを書き変えるときは作業前にバックアップを取ってくださいね。

    1. .htaccess ファイルの改行コード

    CRだと動かなくてLFにしたら動いたという方がいらっしゃいました(参考)。

    2. mod_rewrite モジュールを正しく読み込んでいるか

    http://localhost/server-infophpinfo() でサーバの設定情報を見られます。

    server-info は、XAMPPではデフォルトで見られるように設定されていました。
    phpinfo() は、XAMPPだと http://localhost/xampp/ のサイドバーから見に行けるのですが、MAMPはどうでしょう。なければ自分でphpファイルに書いてアクセスしてもokだと思います。

    もしもmod_rewriteが読み込まれていなかったら、
    httpd.conf で mod_rewrite を読み込む行がコメントアウトされていないか
    ・その指定どおりの位置にファイルが存在するか
    を確認してみてください。
    (例) こんな感じの行
    LoadModule rewrite_module modules/mod_rewrite.so

    (参考)
    mod_info – Apache HTTP サーバ
    設定情報の確認 – Apacheサーバの管理 – Apache入門
    Apacheとmod_rewrite :: The Cookbook

    3. <Directory> ディレクティブでドキュメントルートを指定

    私のPCの httpd.conf はデフォルトでこんな感じ(↓)になっていたので、ルートじゃなくてドキュメントルートディレクトリを指定してみるのはどうかな、と。。。

    XAMPディレクトリのパス/apache/conf/httpd.conf
    (AllowOverride がらみの箇所だけ)

    ServerRoot "XAMPディレクトリまでのパス/apache"
    (中略)
    LoadModule rewrite_module modules/mod_rewrite.so
    (中略)
    DocumentRoot "XAMPディレクトリまでのパス/htdocs"
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    <Directory "XAMPディレクトリまでのパス/htdocs">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    (中略)
    <Directory "XAMPディレクトリまでのパス/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
    (後略)

    性能的にも、.htaccess が要らない場所では無効にしたほうがよいようです(参考)。

    他にも<Directory />〜</Directory>で囲まれた”phpMyAdminForPHP5″など
    のあたりもAllowOverride Allに変更し、

    これが分かりませんでした。MAMP用の何かでしょうか。
    基本的には、WordPressの設置ディレクトリの .htaccess を読んでくれればいいので、ドキュメントルート以下で AllowOverride すれば大丈夫そうな気もするのですが。。。自信なしです。ゴメンナサイ!

    根本的なところで、mod_writeや.htaccessの働きがどう云ったものなのかを理解できておらず、

    以下、簡単な説明です。
    (書き間違えちゃってすみません!正しくは mod_rewrite です。mod_rewrite なら知ってるさ、という場合は読み飛ばしてくださいー。(>_<))

    mod_rewrite はアクセスがあったURLの書き換え(平たく言うと転送)を行なうもので、otomさんが貼ってくださった .htaccess の記述はその書き換え規則です。

    これが動くことはサブディレクトリ型ネットワークの必須条件です。

    例えば http://example.com/追加サイトA/ を作っても、実際には「追加サイトA」というディレクトリや投稿のURLの名前のファイルは実在しません。サーバスペースにはWordPressのファイルがあるだけです。
    追加サイトAのウェブページにアクセスがあると、実在するWordPressのphpファイルに転送して、要求があったウェブページを生成し、ブラウザに表示する、という仕組みになっています。

    今回404エラーが出るのは、どちらかが上手く動いていないために実ファイルに転送できなくて、ウェブページが作れず、「ページがないよ」という返事が返ってきた、んではないかなと考えています。

    ネットワーク作成時に主サイトのパーマリンクも強制的に設定されるのですが、それにも mod_write が使われます。
    こちらも404とのことなので、やはりこれが上手く動いてないような印象です。
    (主サイトのトップページの位置にはちょうど index.php があるので表示できます)

    (ちゃんとした説明はApacheのマニュアルかweb検索してみてください)

    bonoさん、こんばんは。
    度々、ご回答頂きまして有り難うございます。

    まず、結論からで、bonoさんに書いて頂いたチェック項目を試してみたところ、
    1番の”.htaccess ファイルの改行コード”であっさり解決しました。
    エディタの改行コードをLFに変更し、保存の後に表示を確認してみると、主サイトの
    投稿ページ、サブディレクトリの管理パネルのアクセス、表示、すべて正常でした。
    サブディレクトリでの投稿にも問題なさそうです。
    ただ、ようやくサブディレクトリの管理パネルに入ったら何故かすべて英語表示と
    なっており、メインの特権管理者の設定項目、サブディレクトリ管理パネル内設定共に
    日本語を初期設定されているのを確認したのですが、表示は変わらず、いささか困って
    おります。
    ですが、これは全くトピックの主旨とは異なると思いますので、とりあえずは自力で
    苦悩してみようかと思います。
    質問の件に関しましては、ひとまずは解決と云う事でご報告させて頂きます。

    また、念の為、他のチェック項目も確認してみたところ、mod_rewriteの読み込みと
    LoadModule rewrite_module modules/mod_rewrite.so
    の記載を確認し、正常な状況と思われました。
    <Directory> ディレクティブでドキュメントルートを指定の項目も確認を行ったところ、
    ドキュメントルートディレクトリの指定がされておりました。

    そして

    他にも<Directory />〜</Directory>で囲まれた"phpMyAdminForPHP5"など
    のあたりもAllowOverride Allに変更し、

    のところですが、MAMPにてPHP5の指定をしていた為、この箇所のAllowOverrideがNoneになっていたので、Allに変更してみましたと云う、理解できていないところからくる浅知恵でした。申し訳ありませんでした、恥ずかしい限りです。

    mod_rewriteの説明もどうも有り難うございます、全体を通してbonoさんの非常に丁寧で
    分かり易いご回答のお陰で、大変に助かりました。サーバ関連の知識が皆無の状態から
    まだまだぼんやりとですが、理解が深まってきたと云う事と、改行コードなど些細な事も
    きちんと念頭に置いて行うべきと云う事を気付かせて頂きました。

    1週間ほど悩み続けておりましたので、解決できてホッとしました。
    また何かの機会がございましたらご教授頂ければ幸いです。
    本当にどうも有り難うございました。

    ようやくサブディレクトリの管理パネルに入ったら何故かすべて英語表示と
    なっており、メインの特権管理者の設定項目、サブディレクトリ管理パネル内設定共に
    日本語を初期設定されているのを確認したのですが、表示は変わらず、いささか困って
    おります。

    追加したサイトの管理画面が英語表示の場合は、
    設定⇒一般(一般設定)

    英語表記では、
    Settings ⇒ General を開いて、
    Site language: Japanese
    にします。ここが、一番優先順位が高い設定になります。

    Satoko Kusakabeさん、こんにちは。
    ご回答頂きまして有り難うございます。

    ご指摘の通り、対象サイトの一般設定より無事に日本語化されました。
    今考えると、とても初歩的な事かと思い、恥ずかしい限りですが、
    親切にご回答頂きまして誠に有り難うございました。

    (レス不要です)
    otomさん、お疲れさまでした!動いてよかったですー。(^-^)
    3つめは蛇足でしたね。私が分かってなくて、かえって余計なお手間をかけさせてしまって申し訳なかったです。

    Satokoさん、ありがとうございます!

    特権管理者 > 設定でデフォルト言語を日本語にしてても追加サイトが英語で作られちゃうのはなんか変ですね。。別件としてちょっと調べてみますね。

    bonoさん、Satokoさん、度々有り難うございます。

    2つ目以降の追加サイトは何故か最初から日本語表示される様です。ネットワークを作成した時点でメインの設定が継承されるのだと思っており、サブディレクトリの一般設定で言語設定を再度行う必要がある、または確認が必要だと云う事を考えなかった自分が甘かったです。

    ともかくは解決できて非常に助かりました。
    bonoさん、Satokoさん、お二方ともに親切にどうも有り難うございました。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「3.0 マルチサイト サブディレクトリへのアクセスができない」には新たに返信することはできません。