我需要編寫簡單的路由系統,我只有一個問題。PHP URL/slug接受字符
當我有這樣
/article/1/simple-article-1
哪些字符應該被允許有URL /塞。
當然,字母,數字,' - ','/'和?
我需要編寫簡單的路由系統,我只有一個問題。PHP URL/slug接受字符
當我有這樣
/article/1/simple-article-1
哪些字符應該被允許有URL /塞。
當然,字母,數字,' - ','/'和?
的.htaccess:
Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
PHP:
if(isset($_SERVER['QUERY_STRING'])) {
if(!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $_SERVER['QUERY_STRING'])) {
return false;
}
$info = explode('/', $_SERVER['QUERY_STRING']);
....
}
哪些字符應該允許存在。
一般蛞蝓全部小寫,重音字符代替通過由-
或_
取代了英語字母表的字母和空格字符。通常會刪除句號,逗號,問號,感嘆號,撇號和引號等標點符號。它也可能被截斷以保持合理的長度。
可具有在URI的特定含義的保留字符是:!
,*
,'
,(
,)
,;
,:
,@
,&
,=
,+
,$
,/
,?
,#
,[
和]
。如果字符與保留字符的用途相沖突,那麼衝突數據必須在URI形成之前進行百分比編碼。
一旦你的產品的URI,從它的組成部分,如果你想添加不屬於字母,數字字符,-
,.
,_
或~
你應該總是percent-encoding它。
例子:
/article/1/i!want!use!the!exclamation!mark <-- bad
/article/1/i%21want%21use%21the%21exclamation%21mark <-- good
'AZ 0-9〜%:_()@ \ - ' 改變爲按需要 – devpro
看一看這個金屬塊發生器功能http://cubiq.org/the -perfect-php-clean-url-generator並記住國際字符。如果您知道生成段落URL的方式,則可以調整重定向規則。 – pmayer