[英]Relative URL for 301 redirect in htaccess rewrite
我曾經在https://example.com/myapp/doc/file.html
上有一個文檔文件,但是現在我決定將文檔托管在https://example.com/myapp/doc/
。 請注意,路徑可以不同,例如http://customer.com:8080/foo/bar/myapp/doc/file.html
。
如何使用htaccess重定向到正確的目錄? 我的嘗試是:
RewriteEngine On
RewriteRule ^file\.html$ "" [R=301]
這會將文件系統路徑放在URL中,並且完全不合適。 如果我想要內部重定向,它可能會起作用,但我明確希望使用301。
RewriteEngine On
RewriteRule ^file\.html$ "%{REQUEST_SCHEME}://%{HTTP_HOST}/myapp/doc/" [R=301]
這有效,但僅當我的應用程序安裝到URL根目錄中時。 當客戶將其放入/foo/bar
,它將失敗。
如何301重定向到當前目錄?
下面的代碼應該可以在任何位置將當前目錄中的file.html
重定向到當前目錄本身,而無需對路徑進行任何硬編碼。 它將REQUEST_URI
變量(完整的路徑)與RewriteRule
匹配的URI(相對於當前路徑)進行比較,並獲取%{ENV:BASE}
變量的差異。
RewriteEngine On
# find rewrite base dynamically
RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=BASE:%2]
RewriteRule ^file\.html$ %{ENV:BASE} [L,R=301,NC]
例如,它將執行以下重定向:
/foo/bar/myapp/doc/file.html
到/foo/bar/myapp/doc/
/myapp/doc/file.html
到/myapp/doc/
/some/path/file.html
到/some/path/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.