npinti帮助我创建了一个正则表达式来移除查询字符串并匹配网址/seattle/restaurant/sushi?page=2
中的其余细分:“这样的东西应该产生3个组:/(.*?)/(restaurant)/([^?]+).*.
第1组是座位,第2组是餐馆,第3组是寿司。如果在最后/有一个?后,正则表达式会丢弃?以及随后的所有内容。“
我已经尝试修改上面的内容,在网址/seattle/restaurant?page=2
上执行相同的操作,但我无法做到正确。我不知道是否会有af查询字符串或查询字符串的参数。所以我需要上面的正则表达式的灵活性,它将匹配并丢弃?以及随后的一切。我希望有人可以提供帮助。
谢谢
托马斯
答案 0 :(得分:1)
您的重写符可能如下:
RewriteRule /([^/]+)/restaurant/([^/]+)$ mynewpage.php?group1=$1&group2=$2 [QSA,NC,L]
由于我在下面提供的链接,您可以搜索QSA
,NC
和L
的含义。
我很抱歉,但你的问题听起来很像“我不是很好,所以有人可以为我做这个工作吗?”我的意思是,只要环顾四周,你会得到很多答案,只是弄脏你的手。
如果这还不够:
如果您在托管环境中不(=如果它是您自己的服务器而您可以修改虚拟主机,不仅仅是.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)/([^?]+).*.
看起来像是为了做一些非常复杂的事情。