.htaccess rewriterule和condition

时间:2014-05-29 06:51:50

标签: php apache .htaccess mod-rewrite

伙计们我正在尝试使用.htaccess更改我的网址,但遇到一个问题 我的网址看起来像这样

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]

它的工作原理我从重写网址中删除“web /”,但后来网址看起来像

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]

1 个答案:

答案 0 :(得分:0)

这是由两个疏忽引起的。第一条规则不添加" web"到网址。第二条规则在^和正则表达式的其余部分之间包含一个流氓空间,导致它返回错误。

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]

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