我想创建我的网址结构,如:: facebook即facebook.com/?pageid=122 我正在使用htaccess mod重写为:
RewriteRule ^([a-zA-Z_\-]+)/?([a-zA-Z0-9\-=&_@]*)$ /$1.php?$2 [QSA,L]
所以我可以将site.com/home/?pageid=22等网页翻译成site.com/home.php?pageid=22
上面的代码工作正常,但是如果我尝试添加像
这样的点RewriteRule ^([a-zA-Z_\-]+)/?([a-zA-Z0-9\-=&_@\.]*)$ /$1.php?$2 [QSA,L]
.htaccess打破了。我需要点,所以我也可以传递电子邮件,即 site.com/home/?email=sohaib.dmc@gmail.com
请帮忙
答案 0 :(得分:2)
尝试删除点之前的反斜杠。因为在POSIX正则表达式中它不被视为括号内的特殊字符。
答案 1 :(得分:0)
你需要scape问号,因为它是一个特殊字符:
RewriteRule ^([a-zA-Z_\-]+)/\?([a-zA-Z0-9\-=&_@\.]*)$ /$1.php?$2 [QSA,L]
问号使正则表达式中的前一个标记可选。例如:colou?r匹配颜色和颜色。 http://www.regular-expressions.info/optional.html