正则表达式 - mod_rewrite - 在字符后匹配字符串并作为get vars运行

时间:2013-07-11 18:35:32

标签: php regex .htaccess

我希望通过“/ - ”找到并捕获网址,然后在前一页上将结果查找作为单个get var运行:

http://domain.com/about-us/contact/-foo/-bar

将以:

运行
http://domain.com/about-us/contact/?get=/-foo/-bar

我能找到匹配:

RewriteCond %{REQUEST_URI} (\/-.*)
RewriteRule ^(.*)$ ?get=$1 [L]

但是没有成功返回正确的get var。这会产生:

http://domain.com/?get=about-us/contact/-foo/-bar

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您正在匹配RewriteRule中的整个网址,而是将其分解为基础和其他网址,因为您已使用RewriteCond预先确定了网址格式:

RewriteCond %{REQUEST_URI} (\/-.*)
RewriteRule ^(.*?)(\/-.*)$ $1?get=$2 [L]

注意:如果没有RewriteRule,还有其他方法可以做到这一点。但是,这与您当前的代码非常相似。

答案 1 :(得分:0)

好的,我发现了重定向与重写的问题。基本上我需要确保将文件放在index.php

RewriteCond %{REQUEST_URI} (\/-.*)
RewriteRule ^(.*?)(\/-.*)$ $1/index.php?get=$2 [L]

谢谢Jason的帮助!