Php .htaccess重写规则和条件

Php .htaccess重写规则和条件,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,伙计们,我正试图使用.htaccess更改我的url,但遇到了一个问题 我的URL看起来像这样 www.example.com/web-search.php?q=car&limit=15 我想把它变成那样 www.example.com/web/cars/15 但是没有成功,我不明白这个问题,请帮帮我。谢谢 这是我的.htaccess代码 RewriteEngine On RewriteCond %{THE_REQUEST} ^(GET|POST)\ /web-search\.php

伙计们,我正试图使用.htaccess更改我的url,但遇到了一个问题 我的URL看起来像这样

www.example.com/web-search.php?q=car&limit=15
我想把它变成那样

www.example.com/web/cars/15
但是没有成功,我不明白这个问题,请帮帮我。谢谢 这是我的.htaccess代码

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /web-search\.php\?q=(.*)\&limit=(.*?)\ HTTP
RewriteRule ^ /%2/%3? [R=301,L]

RewriteRule ^ web/([^/]*)/([^/]*)$ /web-search.php?q=$1&limit=$2 [L]
当我从重写url中删除“web/”时,它就工作了,但是url看起来像

www.example.com/cars/15 
我不想要,我想添加web/也。提前谢谢

更新1:

这导致了上述重写规则所述的问题

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /search\.php\?q=(.*)\&limit=(.*)\&siz=(.*?)\ HTTP
RewriteRule ^ /%2/%3/%4? [R=301,L]

RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /search.php?q=$1&limit=$2&siz=$3 [L]

这是两个疏忽造成的。第一条规则不向url添加“web”。第二条规则在
^
和正则表达式的其余部分之间包含一个rogue空格,导致它返回一个错误

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /web-search\.php\?q=(.*)\&limit=(.*?)\ HTTP
RewriteRule ^ /web/%2/%3? [R=301,L]

RewriteRule ^web/([^/]*)/([^/]*)$ /web-search.php?q=$1&limit=$2 [L]

请记住在测试之前清除浏览器缓存,因为浏览器可能缓存了旧的、错误的重定向。

可能重复
http://stackoverflow.com/questions/6645137/htaccess-rewrite
重写规则^/%2/%3?[R=301,L]
行似乎不相关。尝试删除它并检查。@Rikesh仍然发生同样的事情这一行会自动更改url,所以这就是我添加它的原因。它正在工作,感谢我遇到的问题是,当我在上面使用另一个重写url时,它是相同的,但有/search.php。这对冲突有何建议?我更新了问题