0

Apache Mod_Rewrite モジュールの使用に問題があります。

get リクエストから 3 つの変数を取得しています

$country
$state
$location

URLをローカルに書き換えることに成功しました

localhost/directory/country/state/location /*is redirected to*/
localhost/directory/result.php?c=country&s=state&l=location

私がやりたいことは、リダイレクトしたいということです

localhost/directory/country to localhost/directory/country.php?c=country

そしての場合

localhost/directory/country/state to localhost/directory/state.php?c=country&s=state

次の RewriteRule を使用しています

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ result.php?s=$1&d=$2&l=$3 [L]

国と州の場合、および国のページのみを表示したい場合は、どのように書き直すことができますか..

どうもありがとう!!オンラインチュートリアルやその他の参考文献への参照を提供して、私を助けてください..

私はあなたに同じことをする義務があります.. :)

4

2 に答える 2

1

URL が国、州、または場所であるかどうかを認識するために、次のような下向きのフローを使用できます。

<IfModule mod_rewrite.c>
    Rewrite Engine On
    RewriteRule ^localhost/directory/([^/\.]+)/([^/\.]+)/([^/\.]+)/ localhost/directory/result.php?c=$1&s=$2&l=$3 [L]
    RewriteRule ^localhost/directory/([^/\.]+)/([^/\.]+)/ localhost/directory/state.php?c=$1&s=$2 [L]
    RewriteRule ^localhost/directory/([^/\.]+)/ localhost/directory/country.php?c=$1 [L]
</IfModule>

最初に、最も長く、最も動的な URL から始めたことに注意してください。あなたのケースcountryでは、最初に最短のものから始めた場合、URL_Rewrite はanswer最初にそれを受け入れ、他の 2 つの Rewrite にヒットすることはありません。

PHPの解析側では、1つのphpページですべての動的URLトラフィックを処理する方が簡単だと思いますが、あなたの場合、そのようなresult.php方法で出力を決定でき、ファイルを飛び回ることを心配する必要はありません.

.htaccess

<IfModule mod_rewrite.c>
    Rewrite Engine On
    RewriteRule ^localhost/directory/([^/\.]+)/([^/\.]+)/([^/\.]+)/ localhost/directory/result.php?c=$1&s=$2&l=$3 [L]
    RewriteRule ^localhost/directory/([^/\.]+)/([^/\.]+)/ localhost/directory/result.php?c=$1&s=$2 [L]
    RewriteRule ^localhost/directory/([^/\.]+)/ localhost/directory/result.php?c=$1 [L]
</IfModule>

result.php

<?php
$location = isset($_GET['l']) ? $_GET['l'] : false;
$state    = isset($_GET['s']) ? $_GET['s'] : false;
$country  = isset($_GET['c']) ? $_GET['c'] : false;

// ...PARSE THE REST OF PHP based off of these variables
?>
于 2012-11-18T16:44:04.410 に答える
0

2 つのルールを使用できると思います。

# localhost/directory/country
RewriteRule ^[^/]+/([^/]+)$  localhost/directory/country.php?c=$1 [L]

# localhost/directory/country/state
RewriteRule ^[^/]+/([^/]+)/([^/]+)$  localhost/directory/state.php?c=$1&s=$2 [L]
于 2012-11-18T16:51:58.337 に答える