Wordpress

子域的新 VirtualHost 的不需要的 301 重定向

  • December 14, 2017

在過去的 3 年中,我擁有 2 個我的 Wordpress 網站副本。一個在 www.domain.com,一個在 dev.domain.com。我今天嘗試添加第三個。看起來很簡單!我完成了所有簡單的設置步驟,一旦啟用該站點,它就會 301 將我引導到 www 站點。我不知道如何解決觸發 301 的問題。它是在 Apache 中還是在 Wordpress 中?我所知道的是,我正在複製開發站點的所有配置,並在適用的情況下更改子域和目錄名稱。看來應該夠了。我的步驟:

  1. 在瀏覽器中打開 dev2.domain.com 並查看預設的 Apache2 頁面
  2. 複製 /dev.domain.com -> /dev2.domain.com 的源文件夾
  3. 複製 /etc/apache2/sites-available/dev.domain.com.conf -> dev2.domain.com.conf
  4. 執行:sudo a2ensite dev2.domain.com.conf
  5. 執行: sudo service apache2 reload (和/或重新啟動 - 我都試過了)
  6. 打開 dev2.domain.com 並獲得 301 重定向到 www.domain.com

有沒有辦法明確找出導致 301 的原因?最令人困惑的是,我通過複製在子域上執行的現有站點來在子域上建立這個新站點。我只是無法弄清楚兩者之間有什麼區別。

強製配置資訊…

所有 3 個站點(www、dev 和 dev2)的根目錄中的相同 .htaccess:

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

# END WordPress
Options +Indexes
IndexOptions -FancyIndexing

dev.domain.com 的站點可用配置…

<VirtualHost *:80>
   ServerName dev.domain.com
   ServerAdmin d@domain.com

   DocumentRoot /srv/dev.domain.com

   <Directory />
       Options All
       AllowOverride All
       Require all granted
   </Directory>

   ErrorLog /srv/dev.domain.com/logs/error.log
   CustomLog /srv/dev.domain.com/logs/access.log combined
</VirtualHost>

dev2.domain.com 的站點可用配置…

<VirtualHost *:80>
   ServerName dev2.domain.com
   ServerAdmin d@domain.com

   DocumentRoot /srv/dev2.domain.com

   <Directory />
       Options All
       AllowOverride All
       Require all granted
   </Directory>

   ErrorLog /srv/dev2.domain.com/logs/error.log
   CustomLog /srv/dev2.domain.com/logs/access.log combined
</VirtualHost>

AWS Route53 中的 DNS 配置…

domain.com       A  12.34.567.89
dev.domain.com   A  12.34.567.89
dev2.domain.com  A  12.34.567.89
www.domain.com   CNAME  domain.com

我想我最堅持的兩件事:

  1. dev 和 dev2 之間的 apache 配置似乎是相同的,除了在適用的地方更改“dev”->“dev2”
  2. 當站點在 apache 中被禁用時,它不會被重定向。重定向僅在站點啟用後發生。這是否意味著它是 Wordpress?

您的 Apache 設置都是準確的;您的問題很可能是域名保存在 Wordpress 數據庫中的結果。預設情況下,Wordpress 將首頁和站點 url 的基本 url 儲存在 wp_options 表中。此外,它將完全限定域儲存在 wp_posts 表中的所有單個文章/頁面 GUID 中。

查找和替換域的選項:

  • 最快:導出 mysql 數據庫,在文本編輯器中打開 mysql 數據庫轉儲並執行全域查找(對於 domain.com 或 dev.domain.com)並替換為(dev2.domain.com),重新導入。
  • 使用 sql 查詢執行查找並用新子域替換舊域的所有實例。

有關將 Wordpress 站點從一個域遷移到另一個域的更多背景資訊,請參閱移動 Wordpress Codex 頁面上標題為“更改您的域名和 URL”的部分

引用自:https://serverfault.com/questions/887967