是否可以简化此htaccess文件?

时间:2016-01-31 21:53:21

标签: php .htaccess

是否可以简化此htaccess文件? (这是一个关于数学的德国网站) 以下是htaccess文件的内容:

RewriteEngine on
RewriteRule ^testversion/formeln/quadrat-formeln-und-eigenschaften$  testversion/formeln/index.php?id=1 [PT]
RewriteRule ^testversion/formeln/rechteck-formeln-und-eigenschaften$ testversion/formeln/index.php?id=2 [PT]
RewriteRule ^testversion/formeln/raute-formeln-und-eigenschaften$  testversion/formeln/index.php?id=3 [PT]
RewriteRule ^testversion/formeln/deltoid-formeln-und-eigenschaften$  testversion/formeln/index.php?id=4 [PT]
RewriteRule ^testversion/formeln/parallelogramm-formeln-und-eigenschaften$  testversion/formeln/index.php?id=5 [PT]
RewriteRule ^testversion/formeln/trapez-formeln-und-eigenschaften$  testversion/formeln/index.php?id=6 [PT]
RewriteRule ^testversion/formeln/sehnenviereck-formeln-und-eigenschaften$  testversion/formeln/index.php?id=7 [PT]
RewriteRule ^testversion/formeln/gleichseitiges-dreieck-formeln-und-eigenschaften$  testversion/formeln/index.php?id=8 [PT]
RewriteRule ^testversion/formeln/gleichschenkliges-dreieck-formeln-und-eigenschaften$  testversion/formeln/index.php?id=9 [PT]
RewriteRule ^testversion/formeln/rechtwinkliges-dreieck-formeln-und-eigenschaften$  testversion/formeln/index.php?id=10 [PT]
RewriteRule ^testversion/formeln/allgemeines-dreieck-formeln-und-eigenschaften$  testversion/formeln/index.php?id=11 [PT]
RewriteRule ^testversion/formeln/kreis-formeln-und-eigenschaften$  testversion/formeln/index.php?id=12 [PT]
RewriteRule ^testversion/formeln/kreisring-formeln-und-eigenschaften$  testversion/formeln/index.php?id=13 [PT]
RewriteRule ^testversion/formeln/kreissektor-formeln-und-eigenschaften$  testversion/formeln/index.php?id=14 [PT]
RewriteRule ^testversion/formeln/ellipse-formeln-und-eigenschaften$  testversion/formeln/index.php?id=15 [PT]
RewriteRule ^testversion/formeln/regelmäßiges-sechseck-formeln-und-eigenschaften$  testversion/formeln/index.php?id=16 [PT]
RewriteRule ^testversion/formeln/würfel-formeln-und-eigenschaften$  testversion/formeln/index.php?id=17 [PT]
RewriteRule ^testversion/formeln/quader-formeln-und-eigenschaften$  testversion/formeln/index.php?id=18 [PT]
RewriteRule ^testversion/formeln/tetraeder-formeln-und-eigenschaften$  testversion/formeln/index.php?id=19 [PT]
RewriteRule ^testversion/formeln/oktaeder-formeln-und-eigenschaften$  testversion/formeln/index.php?id=20 [PT]
RewriteRule ^testversion/formeln/dodekaeder-formeln-und-eigenschaften$  testversion/formeln/index.php?id=21 [PT]
RewriteRule ^testversion/formeln/ikosaeder-formeln-und-eigenschaften$  testversion/formeln/index.php?id=22 [PT]

提前感谢您的提示和建议!

2 个答案:

答案 0 :(得分:0)

我能想到的一件事是,使用路由器。如果有的话,任何请求都会出现:

testversion/formeln/(.*)-formeln-und-eigenschaften

我们可以将它们放到另一个文件中。所以你的.htaccess会变成这样:

RewriteEngine on
RewriteRule ^testversion/formeln/(.*)-formeln-und-eigenschaften$  testversion/formeln/redirect.php?id=$1 [PT]

使用array_search()获取redirect.php

中更改的值
<?php
    $listFiles = array(
        "",
        "quadrat",
        "rechteck",
        "raute",
        "deltoid",
        "parallelogramm",
        "trapez",
        "sehnenviereck",
        "gleichseitiges-dreieck",
        "gleichschenkliges-dreieck",
        "rechtwinkliges-dreieck",
        "allgemeines-dreieck",
        "kreis",
        "kreisring",
        "kreissektor",
        "ellipse",
        "regelmäßiges-sechseck",
        "würfel",
        "quader",
        "tetraeder",
        "oktaeder",
        "dodekaeder",
        "ikosaeder"
    );
    header("Location: index.php?id=" + array_search($_GET["id"], $listFiles))
?>

答案 1 :(得分:0)

您应该使用GET参数作为第二个标识符:

而不是:

RewriteRule ^testversion/formeln/quadrat-formeln-und-eigenschaften$  testversion/formeln/index.php?id=1 [PT]
...
...
你应该做点什么:

RewriteRule ^testversion/formeln/([a-z-]{1,})$  testversion/formeln/index.php?get_parameter=$1 [PT]

&#34;样方-formeln-UND-eigenschaften&#34;应该等于get_parameter WHERE id = 1的值。因此,将字段添加到表中,并为每一行提供唯一值。