[英]basic mod_rewrite / regexp question: Split ID with dash
我正在嘗試為更清潔的URL進行htaccess重定向,但是我沒有做。
這是我的打算:
/kitap/blah => kitap.php?a=blah
/kitap/blah-123 => kitap.php?a=blah&b=123
這是我當前的代碼。
RewriteRule ^(kitap|yazar)/?([^/\.]+)?(-([0-9]+))?/?$ $1.php?a=$2&b=$3 [QSA,L,NC]
目前它產生這個:
/kitap/blah => kitap.php?a=blah
/kitap/blah-123 => kitap.php?a=blah-123
“ blah”一詞可以包含Unicode字符,例如ç,ö,ğ,ş等。(這意味着[a-z0-9_]在我的情況下將不起作用)
我怎樣才能達到預期的結果? 我嘗試了各種事情,但沒有成功。 謝謝。
RewriteRule ^(kitap|yazar)/?([^/\.-]+)?(-(\d+))?/?$ $1.php?a=$2&b=$4 [QSA,L,NC]
要么
RewriteRule ^(kitap|yazar)/?(\p{L}+)?(-(\d+))?/?$ $1.php?a=$2&b=$4 [QSA,L,NC]
除非您打算使用破折號-
,否則$4
而不是$3
;如果使用$3
,則$_GET['b']
等於-123
。 每對括號都很重要,因此$3
是-123
,而$4
是123
。
\\p
表示一個Unicode字符,而{L}
表示一個字母。 您可以在PHP PCRE正則表達式-Unicode字符屬性中看到可用的修飾符。 要使用它們,您的PHP版本必須使用--enable-unicode-properties
進行編譯。
我最后得到了Alin和battal的評論的“混合”解決方案。
RewriteRule ^(kitap|yazar)/?([^/\.-]+)?(-([0-9]+))?/?$ $1.php?a=$2&b=$4 [QSA,L,NC]
而且有效。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.