簡體   English   中英

WordPress在反向代理后面的子目錄中

[英]WordPress in a subdirectory behind a reverse proxy

我在專用的Apache服務器上運行電子商務網站。 我還有一個可在http://www.example1.com/blog上訪問的博客,但該博客並未與電子商務網站托管在同一台計算機上。 要做到這一點,我已經設置了一個反向代理的主要電子商務服務器上的服務http://www.example2.com/當人們試圖訪問http://www.example1.com/blog 第二台服務器是運行WordPress的AWS EC2實例,使用Bitnami的AMI和防火牆規則,只有我們的電子商務服務器才能訪問它。

在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的尾部斜線錯誤地重定向到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>

通常會發生這種情況。 在.htaccess文件中,您有以下規則:

RewriteBase /blog/

但是你的wordpress並沒有安裝在你的主域上,而是安裝在子文件夾中。

因此,當您根據.htaccess文件中的規則執行http://example.com/blog時,它會重寫基本URL並刪除/ 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

這應該夠了吧!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM