需要帮助修改正则表达式

时间:2012-02-04 22:14:18

标签: regex url-rewriting

npinti帮助我创建了一个正则表达式来移除查询字符串并匹配网址/seattle/restaurant/sushi?page=2中的其余细分:“这样的东西应该产生3个组:/(.*?)/(restaurant)/([^?]+).*.第1组是座位,第2组是餐馆,第3组是寿司。如果在最后/有一个?后,正则表达式会丢弃?以及随后的所有内容。“

我已经尝试修改上面的内容,在网址/seattle/restaurant?page=2上执行相同的操作,但我无法做到正确。我不知道是否会有af查询字符串或查询字符串的参数。所以我需要上面的正则表达式的灵活性,它将匹配并丢弃?以及随后的一切。我希望有人可以提供帮助。

谢谢

托马斯

2 个答案:

答案 0 :(得分:1)

您的重写符可能如下:

RewriteRule /([^/]+)/restaurant/([^/]+)$ mynewpage.php?group1=$1&group2=$2 [QSA,NC,L]

由于我在下面提供的链接,您可以搜索QSANCL的含义。


我很抱歉,但你的问题听起来很像“我不是很好,所以有人可以为我做这个工作吗?”我的意思是,只要环顾四周,你会得到很多答案,只是弄脏你的手。


如果这还不够:

两个提示:

如果您在托管环境中(=如果它是您自己的服务器可以修改虚拟主机,不仅仅是.htaccess文件),尝试使用RewriteLog指令:它可以帮助您找出这些问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢检查regexp的工具:

http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)

答案 1 :(得分:0)

这应该允许您匹配?之前的所有文本而不是其他内容。如果不存在?,它将匹配所有内容:

[^?]*

这就是你需要做的吗?因为/(.*?)/(restaurant)/([^?]+).*.看起来像是为了做一些非常复杂的事情。