发送多个值时,RewriteRule不起作用

时间:2014-01-02 22:41:08

标签: .htaccess mod-rewrite seo

我正在尝试SEO友好的以下网址:

... / profiles.php?Country = string-of-country& Page = 7(Page可以是任何整数) 至: ... /简档/ string_of_country / 7

例如,如果没有给出页码,它也应该重定向,例如

... / profiles.php?国家=串的国 至: ... /简档/串的国

即使没有特定国家/地区的字符串,也应该重定向,例如

... / profiles.php 至: ... /简档

我的.htaccess看起来像这样:

Options +FollowSymlinks
RewriteEngine On
# Remove slash to urls
RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteRule  ^profiles$                 /profiles.php?Country=world&Page=1 [L]
RewriteRule  ^profiles/(.+)?$           /profiles.php?Country=$1&Page=1    [L]
RewriteRule  ^profiles/(.+)/([0-9]+)$   /profiles.php?Country=$1&Page=$2    [L]

一切似乎都有效,除了最后一个RewriteRule - 我要求国家字符串($ 1)和任何整数($ 2)。

我尝试了几种选择,但都没有成功。有人可以告诉我如何在请求多个值时正确设置htaccess规则吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您需要更改排序或将倒数第二个规则减少为“贪婪”,因为(.+)模式正在吞噬所有参数。

要么颠倒最后两条规则的顺序:

RewriteRule  ^profiles/(.+)/([0-9]+)$   /profiles.php?Country=$1&Page=$2    [L]
RewriteRule  ^profiles/(.+)?$           /profiles.php?Country=$1&Page=1    [L]

或者让模式不那么贪心:

RewriteRule  ^profiles/([^/]+)?$           /profiles.php?Country=$1&Page=1    [L]