如果該值則需要通過不變,然後是你必須使用逃逸。在URL查詢參數值中,空格可以編碼爲+
或%20
。只要外部版本適當拼寫,mod_rewrite通常會爲你做這件事。
在URL中的外部版本中,只有20%可以用:
http://www.store.com/products/CD%20s-Dvd%20s
http://www.store.com/products.php?category=CD%20s-Dvd%20s
,因爲在一個URL路徑部分+
會從字面上的意思是一個加號。
(你確定你想要一個空間嗎?「的CD-DVD的」無空格似乎是一個更好的標題。)
這是不平凡的,通過從路徑部分獲得任意字符串一個參數。除了轉義問題之外,您還遇到/
問題,應將其編碼爲路徑部分中的%2F
。但是,由於安全原因,Apache會默認阻止任何包含%2F
的URL。 (\
在Windows下受到類似影響。)您可以使用AllowEncodedSlashes
配置關閉此行爲,但這意味着如果您想要便攜,則不能將「CD/DVD」用作類別名稱。
由於這個原因,並且由於在你的URL中加載了一個%20
s有點難看,字符串通常在被放入一個URL之前變成'slugs',其中所有有爭議的ASCII字符將導致可見%-escapes被替換爲填充字符,例如連字符或下劃線。這意味着你不能對字符串進行往返,所以你需要在數據庫中存儲一個單獨的標題和slug,以便能夠查找給定slug的正確實體,或者只是在URL中使用額外的ID (像堆棧溢出一樣)。
我們如何知道這一點? – 2010-03-18 15:32:41