2017-02-05 24 views
0

我在專用的Apache服務器上運行電子商務網站。我還有一個可在http://www.example1.com/blog訪問的博客,但博客不在電子商務網站的同一臺機器上。爲了實現這個目標,我在主電子商務服務器上設置了一個反向代理服務器,當人們嘗試訪問http://www.example1.com/blog時服務於http://www.example2.com/。第二臺服務器是使用Bitnami的AMI運行WordPress的AWS EC2實例,防火牆規則只允許我們的電子商務服務器訪問。WordPress反向代理背後的子目錄

在WordPress中,我的網站網址和主頁網址設置都設置爲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)錯誤地重定向到http://www.example1.com/my-post/(請注意,缺少「blog」子目錄)。此問題也影響我們使用wp-admin界面的能力,因爲它也從其重定向中剝離了「blog」子目錄。

我確定我在博客服務器的Apache和/或WordPress配置中存在一些問題,但是我經過很長時間的修改之後一直無法弄清楚。

我該如何解決這個問題?

編輯:

爲了澄清,在博客上的WordPress服務器安裝在站點根目錄,而不是在一個子目錄。這只不過是被訪問,就好像它是一個子目錄由主服務器電子商務對下列Apache的反向代理規則的方式:

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

這是通常會發生這樣的。在你的.htaccess文件你有這樣的規則:

RewriteBase /blog/ 

但是你的WordPress是不是在你的主要領域,但在子文件夾中安裝。

所以,當你基於來自.htaccess文件它重寫了基本URL,並刪除該規則執行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 /我的員額/'。 我認爲主要的誤解是,在博客服務器上WordPress安裝在網站根目錄下,而不是在子目錄中。我將編輯我上面的原始問題以澄清這一點。 – bspwjh