1

.htaccess

RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/$ http://localhost/website/sale/phones/index.php?type=$1&location=$2
RewriteRule ^([A-Za-z0-9-]+)/$                 http://localhost/website/sale/phones/index.php?type=$1

このようにリンクを設定しています

if (!isset($_GET['type'])) {
    $query = "SELECT type, url FROM {$phones}";

    $result = mysql_query($query);

    while($phone = mysql_fetch_assoc($result)) {
        echo '<li><a href="'. $phone['url'] .'/">'. $phone['type'] .'</a></li>';
    }
} else {
    $query = "SELECT location, url FROM locationstwo LIMIT 100";

    $result = mysql_query($query);

    while($location = mysql_fetch_assoc($result)) {
        echo '<li><a href='. $_GET['type'] .'/'. $location['url'] .'/>'. $location['location'] .'</a></li>';
    }   
}

?>

URL は、必要に応じて左下隅に localhost/website/sale/phones/phonetype/location/ として表示されます

しかし、リンクがクリックされると、アドレス バーに ? 変数が表示されます。

localhost/website/sale/phones/index.php?type=phone-type&location=location 私が本当に欲しいのは localhost/website/sale/phones/phone-type/location/ です

それは.htaccessと関係がありますか?

つまり、/phone-type/location/ で明示的に入力するとパラメーターが渡されるため、htaccess は機能しますが、アドレス バーには ?varialbe でそれらが表示されるだけです。

どうすればこれを修正できますか? ありがとう。

4

1 に答える 1

1

これは、書き換え規則が正しくないためです。ドメインのないパスを必ずターゲットとして使用してください。コードを次のように置き換えます。

RewriteRule ^([\w-]+)/([\w-]+)/?$ /website/sale/phones/index.php?type=$1&location=$2 [L,QSA]
RewriteRule ^([\w-]+)/?$ /website/sale/phones/index.php?type=$1 [L,QSA]
于 2013-09-26T11:18:51.887 に答える