.htaccess url用dot重写问题

时间:2011-08-24 04:25:28

标签: .htaccess mod-rewrite

我想创建我的网址结构,如:: 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

请帮忙

2 个答案:

答案 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