如何用变量中的破折号修改重写

时间:2015-12-19 14:12:11

标签: php apache .htaccess mod-rewrite url-rewriting

我目前的网址是:

/mod.php?name=gal&file=cati&cat=8&caturl=animals-nature&gurl=photo-gallery&offset=1

我想成功:

animals-nature-photo-gallery-8p1.html

我目前的.htaccess

 RewriteRule ^([^/#$%(){}.&-]+)-([^/#$%(){}.&]+)-([1-9][0-9]*)p([1-9][0-9]*).html mod.php?name=gal&file=cati&cat=$3&caturl=$1&gurl=$2&offset=$4 [L]

我得到了正确的重写网址,但在查询字符串$ _SERVER ['QUERY_STRING']中的结果是:

 /mod.php?name=gal&file=cati&cat=8&caturl=**animals**&gurl=**nature-photo-gallery**&offset=1

因为caturl =动物的$ _GET变量是假的!

请帮忙修复它。

1 个答案:

答案 0 :(得分:0)

如果caturl始终只有一个连字符,且gurl也只有一个连字符,则可以使用non-greedy表达式检查

RewriteRule ^(.+?-.+?)-(.+?-.+?)-([1-9][0-9]*)p([1-9][0-9]*).html mod.php?name=gal&file=cati&cat=$3&caturl=$1&gurl=$2&offset=$4 [L]