2016-04-23 105 views
0

我需要在.htaccess中重寫URL?下面是我的問題的描述。需要重新編寫包含#標籤的URL在htaccess中

網址:www.example.com/about.php#vision

需要被改寫爲:www.example.com/vison.html

我想這是在下面所提到的,但它不起作用

RewriteRule ^vison.html$ about.php#vision [L] 
RewriteRule ^our-vision.html(.*)$ about.php$1 [L,NC] 
+0

這不是查詢字符串。這是一個客戶端的東西。這不起作用。你只能重寫查詢字符串或其他東西。 –

回答

1

簡短的回答是:它根本不可能使用.htaccess!

較長的答案:

#字符後的部分不會從瀏覽器向Web服務器發送的,因爲它是唯一使用的客戶端。

這種「重寫」必須使用客戶端JavaScript進行。

hashchange事件可能是一個起點你:

window.addEventListener('hashchange', function() { 
    var hash = location.hash.substr(1); 
    window.location.href = "/" + hash + ".html"; 
}); 

你也應該看看SPAS的(單頁的應用程序)。有很多框架可以幫助您構建像這樣的解決方案。此外,還有更多的現代技術不依賴散列,如popstate事件及其周圍的機制。

你上手一對夫婦的框架,可以幫助的:

更新

當尋找在當前的.htaccess設置,它看起來好像你想要做的與您的問題文本所暗示的相反 - 當有人請求vison.html時,您希望將它們重定向到about.php#vision-和而不是

如果這是真的,那麼,則可以使用的.htaccess通過添加R標誌(重定向),也是NE標誌(NO ESCAPE)防止#字符被編碼做:

RewriteRule ^vison.html$ about.php#vision [NE,R,L] 
+0

謝謝@anders tornblad –