我需要在.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]
我需要在.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]
簡短的回答是:它根本不可能使用.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]
謝謝@anders tornblad –
這不是查詢字符串。這是一個客戶端的東西。這不起作用。你只能重寫查詢字符串或其他東西。 –