0

URLパラメーターが追加されたページのリクエストが、そのファイルが提供されるルートを決定するように、mod_rewriteルールを設定する方法を理解しようとしています。

これがセットアップです。「foo」ディレクトリには、「bar」、「bar19」、「bar27」などがあります。

理想的には、「v」パラメーターの最初の 2 文字で一致させたいと考えています。このように:

…………へのリクエストの送信元:

www.example.com/foo/bar/something.html .......... foo/bar/something.html www.example.com/foo/bar/something.html?v=19xxx ... foo/bar19/something.html www.example.com/foo/bar/something.html?v=27xxx ... foo/bar27/something.html

もちろん、「v」パラメーターの値が 404 に対応するディレクトリを持たない場合は、そうなると思います。

以前に Mod_Rewrite マジックを実行したことがありますが、ここで行き詰まっています。何か案は?

4

1 に答える 1

1

次の内容の.htaccessディレクトリにファイルを追加します。/fooもちろん、次のように挿入することもできますhttpd.conf

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /foo

    # match query parameter v with two-digit value; capture
    # the value as %2 and the query string before and after v
    # as %1 and %3, respectively
    RewriteCond %{QUERY_STRING} ^(.*)v=(\d\d)[^&]*(&.*)?$

    # match path into "bar" and rest; insert two-digit value from
    # RewriteCond inbetween; append rest of query string without v value;
    # use case-insensitivity
    RewriteRule ^(bar)(.*)$ $1%2$2?%1%3 [NC]
</IfModule>

キーは、RewriteCond (%1、%2 などとしてアクセス可能) からキャプチャされた値を使用すると同時に、RewriteRule 自体からキャプチャされた値 (通常のように $1、$2 など) を使用することだと思います

于 2013-05-01T21:14:58.310 に答える