web-dev-qa-db-ja.com

サブディレクトリを持つReWriteRulesとWordPressマルチサイト

マルチサイト対応のWordpress 3.4.2(この記事の最新版)ブログ用にReWriteRulesとURL構造体をセットアップするのに苦労しています。

www.ourdomain.com/は、eコマースサイトのホームページです。

Www.ourdomain.com/example-category/およびwww.ourdomain.com/example-product/もあります。

当社のカテゴリおよび製品のURL構造として。これはすべてうまくいっています。

私は、ワードプレスファイルを物理フォルダ/ var/www/ourdomain/wordpressにインストールしました。今のところ、www.ourdomain.com/wordpress /はデフォルトのブログに行きます。 www.ourdomain.com/wordpress/blog1が最初のブログで、www.ourdomain.com/wordpress/blog2が2番目のブログです。

私はこの時点までに追加することによって持っています

ReWriteRule ^/wordpress - [L,NC]

私たちのvhostファイル(.htacessは無効化されています)に。

www.ourdomain.com/フォルダは単にファイルを格納するためのものであり、ユーザーが実際にアクセスするためのブログとして意図されているものではないため、www.ourdomain.com/wordpress(/*)に対するホームページ/wordpressへの直接要求はユーザーからのものです。

www.ourdomain.com/blog/の要求は黙ってwww.ourdomain.com/wordpress/blog1にリダイレクトするべきです。 www.ourdomain.com/policies/の要求は黙ってwww.ourdomain.com/wordpress/blog2にリダイレクトするべきです。

そう:

/wordpress/ -> 301 /
/blog/ -> silent /wordpress/blog1
/policies/ -> silent /wordpress/blog2

理論的には単純に思えますが、実際にはそれほど単純ではありません。

私は始めました:

ReWriteRule ^/wordpress - [L,NC]
RewriteRule ^/blog/(.*)$ /wordpress/blog/$1 [L,NC]  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/blog/ /wordpress/blog/index.php [L]

これは404// blog /になります。もちろん、/wordpress/blog/index.phpはファイルではありません。 blogフォルダー内にwordpressフォルダーはありません。ロードしたいファイルは/wordpress/index.phpです。これは、どのブログをロードするかを判断するためにURLを読み取ります - しかし、URLは変更されているので失敗します。 URL/blog /から/wordpress/index.phpを呼び出す方法が必要ですが、/wordpress/index.phpにユーザーが/wordpress/blogにアクセスしたかのようにリクエストを参照させるようにします。

ModRewriteからPHPに偽のURIを渡す方法はありますか?それともWordPressの別のコピーにインストールせずにこれを達成するための代替方法は?

更新:

これは現在のバージョンではサポートされていないようですが、新しいバージョンがリリースされる前にまだ作業が必要ですので、次のような方法で回避することをお勧めします。

RewriteRule ^/blog/ /wordpress/index.php?site=blog [L]

そして、そのURLを読み込むWordPressファイルを修正し、代わりにGETパラメータに基づいてサイト変数を設定します。それはうまくいくでしょうか?どのファイルに現在のサイトを設定するためのコードが含まれていますか?

1
Nick

これは現在マルチサイト設定では不可能です。来月リリースされる予定のWordPress 3.5でそれが可能になるはずです。だからあなたの唯一の解決策は次のとおりです。

12月26日更新:これはWordPress 3.5でこれ以上手を加えることなく可能になりました。 :)

1
fuxia