我有一個重定向。如果請求進入根并且內容在 /website3 中可用,它會從 website3 中提取內容,但僅顯示根請求。這真的很好用。例如,一個請求來自 example.com/foo/test/ 并且 /website3/foo/test 中有一個 index.htm 檔案,內容顯示時在 url 中不包含 website3。如果存在不同的路徑(例如 example.com/test),它也會很好地播放,它將轉到測驗目錄。這一切都很完美。
我試圖弄清楚請求是否來自 example.com/website3/foo/test 我希望它重定向到 example.com/foo/test 但仍然從 website3 中提取內容。我已經嘗試了一些東西,它們都導致了一個回圈。
這是當前代碼:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# Remove trailing slash on any URL that is requested directly (excludes rewritten URLs)
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule (.*)/$ /$1 [R=301,L]
# Rewrite root
RewriteRule ^$ website3/ [L]
# If request maps to a directory in "/website3" then rewrite and append trailing slash
RewriteCond %{DOCUMENT_ROOT}/website3/$1 -d
RewriteRule ^([^.] )$ website3/$1/ [L]
RewriteCond %{DOCUMENT_ROOT}/website3/$1 -f
RewriteRule (.*) website3/$1 [L]
uj5u.com熱心網友回復:
RewriteEngine
在指令后立即添加以下內容,以/website3/
從直接請求的任何 URL 的開頭洗掉。
# Remove "/website3/" from any URL requested directly
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^website3/(.*) /$1 [R=301,L]
請注意,這會檢查REDIRECT_STATUS
env var 以防止重定向回圈 - 與洗掉尾部斜杠的規則相同。
env var 未在REDIRECT_STATUS
初始請求中設定(即為空),并在第一次成功重寫后設定為“200”(如 200 OK HTTP 狀態)。
首先使用 302(臨時)重定向進行測驗,以避免潛在的快取問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470866.html
上一篇:包含帶有重定向的標頭
下一篇:禁止直接訪問nginx位置