簡體   English   中英

WordPress將所有重定向鏈接到雙重URL

[英]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_urlhome的行需要在它們前面有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_urlHome_url前面的數據庫的wp_option表中。

暫無
暫無

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

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