2012-06-08 43 views
2

我终于决定钻研正规表达的精彩世界。我的Regex/htaccess语法是否正确?

基本上我的目标是

浏览器发送

http://example.com/search/Bombay 

阿帕奇转换成该

http://example.com/search/?city=Bombay 

我的规则的尝试是这样的:

RewriteRule ^search/([^/.]+)/?$ search/?city=$1 

这是正确的方法吗?有没有什么好的地方可以更多地了解Regex?

在此先感谢

+0

你测试了你目前的模式吗?它应该工作正常。一定要启用mod_rewrite:'RewriteEngine on'和'Options + FollowSymLinks'。 – Bojangles

+0

不要在下面加上'[L,QSA]'标志:'RewriteRule^search /([^/.]+)/?$ search /?city = $ 1 [L,NC,QSA] ' – anubhava

+0

[http://www.regular-expressions.info/](http://www.regular-expressions.info/),[Apache Mod_Rewrite Documentation](http://httpd.apache.org/docs/current /mod/mod_rewrite.html) –

回答

1

您试图匹配太多的正则表达式。我会去

RewriteRule ^search/([^/]+)/?$ search/?city=$1 [NC,L] 

还要注意,我已经加入了NC不区分大小写的标志和L最后一个标志,这意味着如果在混合或大写的URL,用户类型,然后它仍然也匹配一旦匹配,它将停止访问htaccess文件,并与您目前匹配的内容一起进行。

试着在这里了解它们http://www.regular-expressions.info/或者得到一本体面的书。

还真的你应该尝试这些东西之前发布在这里。