我试图找出我怎么能写重写规则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帮助!
究竟什么是你想匹配转移后?一点都不清楚。根据什么标准,你希望它匹配什么标准,你希望它不匹配?你是否希望它在域名后面有三个以斜线分隔的部分,可选地后跟一个由三个斜线分隔的数字组成的日期,并且只有在这些情况下,一些附加的东西由连字符与日期分开?我从正则表达式中推断出这一点,但描述并没有说明你想做什么。 –
哦也,做的第一部分一定是小写,而资本被允许以其他方式?这正是正则表达式所要求的。 –