2013-03-04 55 views
1

我有一個表格,其中每一行代表一個頁面。列title保存頁面名稱。加載頁面時,原始網址如下所示:www.mysite.com/?q=france,然後我快速查找數據庫WHERE title = 'france'就是這樣。我現在使用htaccess使網址更友好。像這樣:RewriteRule ^([a-zA-Z0-9#%@\s\(\)\[\]\-]+)$ page.php?q=$1,所以我可以使用www.mysite.com/france。我遇到的問題是標題中有&符號,比如'one & two'。查找失敗。我試圖htaccess和&符號中的URL

  1. 添加\&到htaccess的,和
  2. www.mysite.com/one%26 2

這兩項失敗,雖然www.mysite.com/?q=one %26 two確實工作。

有沒有什麼辦法讓我得到這個「乾淨」的網址?

TIA!

+0

http://dracos.co.uk/code/apache-rewrite-problem/ – user123444555621 2013-03-04 08:25:46

+1

雖然我有我的回答,我很好奇,爲什麼這個問題被認爲是無關。我看了下面鏈接的FAQ,這個問題似乎在範圍之內。如果有人會告訴我問題所在...... – Phil 2013-03-04 09:53:30

+1

我沒有看到這可以脫離主題以及... – 2013-03-04 13:01:42

回答

7

兩件事情:之前它是通過mod_rewrite的把

  1. 的URI進行解碼,這樣你就不會要匹配%26,你想簡單對陣&
  2. 現在需要重新編碼&回到%26,因爲它被放置在查詢字符串,所以你需要使用B標誌。因此,像這樣:

    # Add a "&"----------------v 
    RewriteRule ^([a-zA-Z0-9#%@&\s\(\)\[\]\-]+)$ page.php?q=$1 [L,B] 
    #      Include the "B" flag -------------------^ 
    
+0

這是做到了。謝謝! – Phil 2013-03-04 09:52:14