[英]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.