2016-09-18 73 views
2

我正在嘗試使用錨標記將URL重定向到頁面。重定向的作品,但我如何保留重定向後的原始網址,而不是重定向的網址。htaccess帶錨標記的重定向url

我想將www.example.com/caves/重定向到www.example.com/trips.html#caves

當我重定向我得到的URL www.example.com/trips.html#caves,但希望它保持www.example.com/caves/

我已經花了年齡尋找答案,但沒有運氣,任何幫助,將不勝感激

這裏是我的htaccess的

RewriteEngine on 

RewriteRule ^Caves/(.*) /trips.html#Caves [NE,L,R] 

回答

1

代碼,我懷疑是可以做到的。 Anchor是一個客戶端指令,不能通過服務器端重寫「隱藏」它(如果瀏覽器沒有看到它,它就不能跳轉到錨點),所以錨點必須位於地址欄URL中。

+0

在這種情況下使用術語「錨定標記」似乎有點用詞不當。 OP已經「成功」重定向到實際的URL(在錨標籤中具有期望的URL),但是它們要求重定向被「隱藏」,即。一個_internal rewrite_ - 這通常是可能的。但是,這種情況下的警告是片段標識符,它在內部重寫時不通過。 – MrWhite

0

...我如何在重定向之後保留原始URL而不是重定向的URL。

你想要一個內部重寫,而不是一個外部重定向 - 這是您正在使用的RewriteRule使用R(重定向)標誌的做什麼。

RewriteRule ^Caves/(.*) /trips.html#Caves [NE,L,R] 

通常情況下,你可以簡單地刪除R標誌,以保持原來的URL地址欄中。請求是在內部重寫/trips.html

但是,片段標識符(即#Caves-或嚴格地所有之後#)丟失。請求被重寫爲/trips.html,而不是/trips.html#Caves。片段標識符由客戶端評估,而不是由服務器評估,無疑被客戶端JavaScript用來顯示適當的內容。由於內部重寫,客戶端JavaScript永遠不會看到片段標識符。

但是,如果您在內部重寫請求(即/Caves/仍然存在於地址欄中),那麼您的客戶端代碼不需要#Caves片段標識符。它可以簡單地查看原始URL,即。 /Caves/。但是這需要對客戶端代碼進行一些小改動。

除了...請注意,您使用的是你的代碼Caves(大寫首字母),但涉及您的描述caves(全部小寫)。你寫的指令是大小寫敏感的,所以它應該是/Caves/,而不是/caves/在您的描述?)