Proxy

將所有不以 example.com/wiki 開頭的 example.com/path 重定向到 example.com/wiki - NginX 代理

  • July 4, 2018

我最近將我的網站從 Wordpress 移到了 confluence,但我遇到了頁面重定向問題。我為我的 Confluence 設置了一個自定義的 404 頁面,但它只有在你輸入時才有效

https://www.freesoftwareservers.com/asdasdas

但是如果你去一個舊的連結,比如

https://www.freesoftwareservers.com/index.php/2015/09/03/install-dd-wrt-on-linksys-ea6500/

它會將您帶到我的“confluence”頁面,但這/wiki是一個特殊的外掛,我想成為面向公眾的一面。我通過不同的子域訪問該頁面,然後是 www。

我的“解決方法”將是兩件事之一,

1)全部重定向https://www.freesoftwareservers.com/index.php/*https://www.freesoftwareservers.com/wiki

2)全部重定向https://www.freesoftwareservers.com/(Anything BUT /wiki)https://www.freesoftwareservers.com/wiki

我在 NginX 網站上找到了一些接近的東西,但它比我需要的更複雜,而且我在所需的表達式方面遇到了麻煩。

https://www.nginx.com/blog/creating-nginx-rewrite-rules/

這是一個使用重寫指令的範例 NGINX 重寫規則。它匹配以字元串 /download 開頭的 URL,然後在路徑後面的某個位置包含 /media/ 或 /audio/ 目錄。它將這些元素替換為 /mp3/ 並添加適當的文件副檔名 .mp3 或 .ra。這 $ 1 and $ 2 個變數擷取不改變的路徑元素。例如,/download/cdn-west/media/file1 變為 /download/cdn-west/mp3/file1.mp3。

server {
   ...
   rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
   rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
   return  403;
   ...
}

也許我需要把它分成兩部分,一個返回 404 的伺服器塊和一個 404 處理程序,但我想把這一切都保留在我現有的 nginx 伺服器塊中。

順便說一句,我已經在使用以下重寫規則將 domain.com/ 重定向到 domain.com/wiki,但這僅在您最後鍵入https://www.freesoftwareservers.com時才有效。

rewrite     ^/$ /wiki permanent;

感謝您提供任何幫助,網際網路上有許多指向我網站的斷開連結:)

好吧,一旦我發布了賞金,我在為我的問題寫一個更好的描述時就想通了……

rewrite ^/index.php /wiki permanent;

引用自:https://unix.stackexchange.com/questions/315366