簡體   English   中英

htaccess中301重定向的相對URL重寫

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

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