2009-06-02 98 views
1

我試圖在使用mod_rewrite(在Ubuntu Server 9.04上運行的Apache2)的網站上設置頁面錨點。頁面錨點與mod_rewrite?

我htaccess文件是這樣的:

RewriteEngine On 
RewriteRule ^information.php/([A-Za-z0-9-]+)/?$ information.php?display=$1 [NC,NE] 

如果我是用普通的URL查詢會是這個樣子:http://mydomain/information.php?display=faq#cost

我希望能得到這樣的: http://mydomain/information/faq/cost

這可能嗎?我的理解是,modrewrite忽略頁面錨定,並且瀏覽器處理它?我猜測我可以用mod_rewrite在請求中加入錨點信息,但是我一直沒能找到任何記錄這些信息的東西,並且一直試圖自己寫幾個小時沒有成功。

謝謝!

回答

3

其實,如果你想導致 URL有一個錨點,那麼是的,這是可能的。不要忘記,在Apache配置中,#標誌着評論的開始。

如果你想要的是這樣的 - 用戶輸入

http://example.com/page/anchor
並獲取重定向到
http://example.com/?p=page#anchor
- 你需要使用301重定向或類似的東西,所以它不會透明的用戶。

結論:雖然有可能編寫這樣的重定向規則,但它不能完全在服務器端完成。所以我認爲你可以指向/information/faq/information.php?display=faq,然後使用幾乎所有你想要的URL,例如:

http://example.com/information/faq#foo
,另外它們不會搞亂緩存。

(哇,已經是午夜了?)

+1

+1,好點,我誤解了問題,並認爲這是相反的方式。 – 2009-06-02 21:18:37

+0

嗯,我有點誤解了這個問題 - 雖然這種重定向是可能的,但它不會對用戶透明,因爲它不能在服務器端完成,只能使用HTTP重定向。 – grawity 2009-06-02 21:22:10

+0

當然可以。需要HTTP重定向。 – 2009-06-02 21:23:28