簡體   English   中英

Nginx 404到301基於URI重定向

[英]Nginx 404 to 301 redirect based on URI

我正在嘗試在WordPress中創建多個404重定向,而我目前正在使用此方法:

error_page 404 @foobar;

location @foobar {
    rewrite  .* / permanent;
}

我知道這是為了重定向到首頁,但是此方法根本不起作用 ,因為它默認使用主題中包含的常規WordPress 404.php文件。 很好,但是我需要通過Nginx而不是WP來進行重定向,因為一旦頁面被聲明為404,我就需要創建不同的重定向。

示例:假設我的WP網站上大約有10個類別。 我有來去去的帖子,一旦帖子消失了,我想將該帖子重定向(因為某個類別中的每個帖子都有唯一的標識符)到基本類別。

示例:重定向不存在的帖子

/i-love-soup-cause-it-tastes-so-good-campbellssoup ---> /category/campbellssoup

要么

/toystory-3-is-a-great-movie-coolmovies ---> /category/coolmovies

基本上,只有在URI被建立為404之后,我才需要創建到多個位置的多個重定向。有什么想法嗎?

編輯:

好的,使用

fastcgi_intercept_errors on;

我設法消除了WordPress的虛擬錯誤。 現在我可以重定向到@foobar ,但是我無法將uri轉移到@foobar位置塊。 我猜想這與我的/ location塊中的try_files有關。

location / {
    #try_files $uri $uri/ /index.php?q=$request_uri;
    try_files $uri $uri/ /index.php?$args;
}

首先,您的配置中存在語法錯誤,應該為error_page 404 = @fallback 這應該工作正常, 僅當wordpress生成404時才有效。我猜是它包含了類似404.php的內容。 我也不確定您是否可以在指定位置更改狀態代碼。 該文檔明確指出,在不需要更改URI的情況下,可以使用后備位置,並且使用其他不需要的語法來更改URL。 我首先要弄清楚WordPress是否自行處理404。 如果是這種情況,請在該文件中處理重定向。 如果不是,那么只需創建您自己的頁面即可處理您喜歡的腳本語言的重定向。 如果您可以在錯誤頁面的命名位置進行重寫,則@tcurvelo解決方案的底部應該可以解決問題。

暫無
暫無

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

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