[英]WordPress links all redirect to double URL
一位開發人員在他的本地機器上構建了一個WordPress網站。 然后,他將整個安裝遷移到服務器上。 當然,sql中的所有鏈接都設置為localhost:8888
。 然后我運行SQL更新來修復鏈接,以便他們指向正確的域(現在是一個ipaddress/~username
鏈接)。 我已經仔細檢查了我的工作,看起來都很正確。
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_options SET option_value = replace(option_value, 'feed://www.olddomain.com', 'feed://newdomain.com');
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
我使用了那種編碼,但在那里有適當的域信息。
所以現在發生了什么。
每當我去主頁,它都可以工作,但圖像不會出現。 然后我點擊一個鏈接,或前往teh wp-admin,它會在urlbar中顯示兩次url。 所以它是這樣的:
http://newdomain.com/~user/http://newdomain.com/~user/post-name-blah-blah-blah
.htaccess
文件都是默認文件,(如果WordPress位於子目錄中,是否應該有重寫規則,而不僅僅是/?)
什么可能導致網站上的每個鏈接兩次轉到同一個網址,如果它們都沒有像SQL中那樣列出?
更新:
好吧,所以我擦除整個數據庫並重置它,然后該網站工作正常。 當然這意味着我失去了所有內容。 我猜我搞砸了sql查詢的某個地方。 但我找不到任何有兩個網址的地方,或者甚至會造成這種情況。 當我弄清楚我的問題時,會有更多更新。
我解決了! 希望如果有其他人來到這里並有同樣的錯誤,這將有所幫助。 在wp_options
表中, site_url
和home
的行需要在它們前面有http://
。 不知何故,我的sql查詢破壞了那部分。 當然我沒注意到因為地址看起來正確,因為這通常有效。 但是在這種情況下,它導致了一個帶有一些鏈接的永無止境的循環,而在其他情況下,它只會使地址加倍。
在進行數據庫調整時,您可能會工作,我發現它們存在問題。 相反,每當有人移動WordPress網站時,您需要在wp-config.php
文件中的以下變量上正確調整WordPress安裝中的配置:
define('WP_SITEURL', 'http://newdomain.com/wordpress');
define('WP_HOME', 'http://newdomain.com/');
define('WP_CONTENT_DIR', '/path/to/your/wordpress/wp-content');
define('WP_CONTENT_URL', 'http://newdomain.com/wp-content');
這將強制您的安裝使用newdomain.com
網址。 此外,當您這樣做時,第一次將RELOCATE
設置為true
如下所示:
define('RELOCATE', true);
這基本上告訴WordPress重新調整(這是我的技術術語)它是新設置的存儲設置。 在您重新加載網站並按預期工作后,將RELOCATE
設置設置為false
如下所示:
define('RELOCATE', false);
但你也這樣說:
(如果WordPress位於子目錄中,是否應該有一個重寫規則,而不僅僅是/?)
如果您將WordPress放在子目錄中,則必須更改。 所以我們假設WordPress位於一個名為coolsite/
的子目錄中。 然后更改默認的WordPress .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
對此; 注意我改變RewriteBase
和最后一個RewriteRule
:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /coolsite/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /coolsite/index.php [L]
</IfModule>
# END WordPress
將http://
放在site_url
和Home_url
前面的數據庫的wp_option
表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.