
在過去的 3 年裡,我有 2 個 WordPress 網站的副本。一份位於 www.domain.com,一份位於 dev.domain.com。今天我想新增第三個。看起來很簡單!我完成了所有簡單的設定步驟,一旦我啟用該站點,它就會透過 301 引導我訪問 www 站點。我不知道如何排除觸發 301 的問題。我所知道的是,我正在複製開發網站的所有配置,並在適用的情況下更改子網域和目錄名稱。看來這樣應該就夠了。我的步驟:
- 在瀏覽器中開啟 dev2.domain.com 並看到預設的 Apache2 頁面
- 複製 /dev.domain.com 的來源資料夾 -> /dev2.domain.com
- 複製 /etc/apache2/sites-available/dev.domain.com.conf -> dev2.domain.com.conf
- 執行:sudo a2ensite dev2.domain.com.conf
- 執行: sudo service apache2 reload (和/或重新啟動 - 我都嘗試過)
- 開啟 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 [email protected]
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 [email protected]
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
我想我最糾結的兩件事是:
dev和dev2之間的apache配置似乎除了在適用的情況下更改“dev”->“dev2”之外,保持相同
當該網站在 apache 中被停用時,它不會被重定向。僅在啟用網站後才會發生重定向。這是否意味著它是Wordpress?
答案1
您的 Apache 設定都是準確的;您的問題很可能是由於網域保存在 Wordpress 資料庫中造成的。預設情況下,Wordpress 將主頁和網站 url 的基本 url 儲存在 wp_options 表中。此外,它將完全限定的網域儲存在 wp_posts 表中所有單獨的帖子/頁面 GUID 中。
尋找和取代網域的選項:
- 最快:匯出mysql資料庫,在文字編輯器中開啟mysql資料庫轉儲並執行全域查找(domain.com或dev.domain.com)並替換為(dev2.domain.com),重新匯入。
- 使用 SQL 查詢執行尋找並用新子網域取代舊網域的所有執行個體。
有關將 WordPress 網站從一個網域遷移到另一個網域的更多背景信息,請參閱標題為「更改您的網域和 URL」的部分行動 WordPress Codex 頁面