[英]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.