我試圖找出我怎麼能寫重寫規則htaccess的一個可選的部分。通常我有這個:可選的URL部分重寫規則
RewriteRule ^([a-z\-]+)/([A-Za-z\-]+)/([A-Za-z\-]+)/([0-9]+)/([0-9]+)/([0-9]+)\-([A-Za-z0-9\-]+)$ /system.php?lang=$1&category=$2&subcategory=$3&year=$4&month=$5&id=$6&title=$7 [QSA,L]
它工作正常,如果我有地址例如
http://dev.example.com/en/blog/usa/2013/9/1-title-of-post
結果是:
$_GET["lang"]="en";
$_GET["category"]="blog";
$_GET["subcategory"]="usa";
$_GET["year"]=2013;
$_GET["month"]=9;
$_GET["id"]=1;
$_GET["title"]="title-of-post";
但有時我只是想用類似的地址:
http://dev.example.com/en/about/me
而且我想這樣的:(我的意思是沒有定義其它的值,但服務器找到那個地址)
$_GET["lang"]="en";
$_GET["category"]="about";
$_GET["subcategory"]="me";
$_GET["year"]=null;
$_GET["month"]=null;
$_GET["id"]=null;
$_GET["title"]=null;
所以我希望可選部分從一年開始,但如果有人用年份和其他語句寫地址,我想採用它。
謝謝你YOUT幫助!
究竟什麼是你想匹配轉移後?一點都不清楚。根據什麼標準,你希望它匹配什麼標準,你希望它不匹配?你是否希望它在域名後面有三個以斜線分隔的部分,可選地後跟一個由三個斜線分隔的數字組成的日期,並且只有在這些情況下,一些附加的東西由連字符與日期分開?我從正則表達式中推斷出這一點,但描述並沒有說明你想做什麼。 –
哦也,做的第一部分一定是小寫,而資本被允許以其他方式?這正是正則表達式所要求的。 –