1

我有以下代码:

if (isset($_GET['preis']) && $_GET['preis']==="0-100-euro"){
    $preis = "WHERE preis >= 0 and preis <= 100";
}
elseif (isset($_GET['preis']) && $_GET['preis']==="100-200-euro"){
    $preis = "WHERE preis >= 100 and preis <= 200";
}
elseif (isset($_GET['preis']) && $_GET['preis']==="200-300-euro"){
    $preis = "WHERE preis >= 200 and preis <= 300";
}
elseif (isset($_GET['preis']) && $_GET['preis']==="300-500-euro"){
    $preis = "WHERE preis >= 300 and preis <= 500";
}
else {

}


$abfrage = "SELECT * FROM outfits $preis LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);

example.com/?preis=100-200-euro 有效,但 example.com/preis-100-200-euro/ 无效

这是我的 htaccess:

RewriteEngine On

RewriteRule ^preis-([^-]*)/seite-([^-]*)/$ ?preis=$1&seite=$2 [L]

RewriteRule ^preis-([^-]*)/$ ?preis=$1 [L]
RewriteRule ^seite-([^-]*)/$ ?seite=$1 [L]

我对许多其他链接使用相同的规则,它工作正常,但只有在这种情况下不是

4

2 回答 2

1

您遇到的问题是您的请求中有破折号,但您的正则表达式明确排除了它们:([^-]*)这意味着:零个或多个不是破折号的字符

尝试更改您的正则表达式以包含破折号:

RewriteRule ^preis-(.*)/seite-(.*)/$ ?preis=$1&seite=$2 [L]
RewriteRule ^preis-(.*)/$ ?preis=$1 [L]
RewriteRule ^seite-(.*)/$ ?seite=$1 [L]

或者您可以更改它以排除斜杠:

RewriteRule ^preis-([^/]*)/seite-([^/]*)/$ ?preis=$1&seite=$2 [L]
RewriteRule ^preis-([^/]*)/$ ?preis=$1 [L]
RewriteRule ^seite-([^/]*)/$ ?seite=$1 [L]

在您的情况下这可能更有意义。

于 2013-10-21T16:13:52.840 回答
0

您可以获取第一个元素并将其分解: RewriteRule ^preis-([^-]*)/$ ?preis=$1

$preis = $_GET['preis']; $arrayPreis = explode("-",$preis");

$where = WHERE preis >= $arrayPreis[1] 和 preis <= $arrayPreis[2]

……有些人是这样想的

于 2013-10-21T15:51:55.540 回答