匹配查询字符串变量与mod_rewrite

时间:2016-06-29 13:29:37

标签: php .htaccess variables mod-rewrite

我的网址包含以下查询参数:

/list.php?id=1&name=some-stuff.html
/list.php?id=18&name=some-another-stuff.html

我怎样才能让它们看起来像这样

/1-some-stuff.html 

甚至

/some-stuff.html

我尝试了以下几行,但收到​​404错误:

RewriteCond %{QUERY_STRING} id=(\d+)&name=(\w+)
RewriteRule ^list.php /%1-%2? [L,R=301]

1 个答案:

答案 0 :(得分:0)

您需要使用其他规则将new url重写回list.php

RewriteCond %{QUERY_STRING} id=(\d+)&name=(\w+)
RewriteRule ^list.php /%1-%2? [L,R=301]
RewriteRule ^([^-]+)-([^/]+)/?$ /list.php?id=$1&name=$2 [END]

编辑:END标志在所有版本的apache上都不起作用,如果您使用的是apache版本,请使用以下%{THE_REQUEST}

RewriteCond %{THE_REQUEST} /list\.php\?id=(\d+)&name=([^\s&]+) [NC]
RewriteRule ^ /%1-%2? [L,R=301]
RewriteRule ^([^-]+)-([^/]+)/?$ /list.php?id=$1&name=$2 [L]