2017-02-05 15 views
0

専用のApacheサーバーでeコマースWebサイトを実行しています。 http://www.example1.com/blogにアクセス可能なブログもありますが、ブログはeコマースウェブサイトと同じマシンでホストされていません。これを達成するために、人々がhttp://www.example1.com/blogにアクセスしようとすると、http://www.example2.com/を提供するためにメインのeコマースサーバーでリバースプロキシを設定しました。その2番目のサーバーはBitnamiのAMIを使用してWordPressを実行するAWS EC2インスタンスで、ファイアウォールルールを使用して、当社のeコマースサーバーのみにアクセス可能にします。リバースプロキシの背後にあるサブディレクトリにあるWordPress

WordPressでは、自分のサイトURLとホームURLの設定がともにhttp://www.example1.com/blogに設定されています。私のWordPressサーバーの.htaccess設定は以下の通りです。

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

ほとんどの場合、これはうまくいきます。メインブログページとその上のすべてのHREFは、期待通りにhttp://www.example1.com/blogで始まります。私の問題は、リダイレクトが正しく処理されていないことです。例えば、http://www.example1.com/blog/my-postのようなポストのかわいらしいURLの後ろにスラッシュを残すと、間違ってhttp://www.example1.com/my-post/にリダイレクトされます(「blog」サブディレクトリがないことに注意してください)。この問題は、リダイレクトから「blog」サブディレクトリを削除しているため、wp-adminインターフェイスの使用にも影響します。

私は、ブログサーバーのApacheやWordPressの設定で間違っていることがあると確信していますが、非常に長い間それを試してみることができませんでした。

どうすればこの問題を解決できますか?

編集:

のWordPressがサイトルートではなく、サブディレクトリにインストールされているブログサーバ上で、明確にします。

ProxyPreserveHost On 
ProxyRequests Off 
<Location "/blog"> 
    ProxyPass http://www.example2.com 
    ProxyPassReverse http://www.example2.com 
    Order allow,deny 
    Allow from all 
</Location> 
+0

任意の解決策 –

答えて

0

それはそのように発生する通常だ:それはメインのeコマースサーバー上で次のApacheリバースプロキシルールによってサブディレクトリであるかのように、それは単にアクセスされています。あなたの.htaccessファイルでは、このルールがあります:

RewriteBase /blog/ 

をしかし、あなたのワードプレスは、あなたのメインドメインではなく、サブフォルダにインストールされていません。

だから、それがベースURLを書き換え、削除する.htaccessファイルからのルールに基づいてhttp://example.com/blogを実行するときに/ブログ/

単にあなたのブログがこのように見えるようにするために.htaccessファイルを変更します。

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

これはトリックを行う必要があります!

+0

アドバイスをいただきありがとうございます。残念ながら、それはそのトリックをしませんでした。 .htaccessの推奨事項を適用した後、クライアントから 'curl -i http:// www.example1.com/blog/my-post'を実行すると、私はまだ以下のロケーションヘッダを受け取ります:' Location:http:// www .example1.com/my-post/'と入力します。 私は主な誤解は、ブログサーバーでWordPressがサイトルートにインストールされ、サブディレクトリにはインストールされていないと思います。私はこれを明確にするために上記の私の元の質問を編集します。 – bspwjh

関連する問題