1

通常は mod_rewrite 条件を .htaccess ファイルに入れますが、これは httpd.conf ファイルに入れる必要がある場合です。私がやりたいことは単純に思えるので、私は混乱しています: サイトのルートはネストされたディレクトリです: mydomain.com/foo/bar/ それはちょうどそのようでなければなりません. 人が入力できるようにルールを書きたい: mydomain.com/simple すると、mydomain/foo/bar のコンテンツが表示される また、人がサイトをクリックすると、mydomain.com/simple/some-other -永続化するページ構造。私が得た最も近いものはこれです:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule   ^simple$ /foo/bar/$1 [PT]
</IfModule>

ただし、このルールを使用すると、ユーザーが mydomain.com/simple と入力すると、ブラウザーの URI が mydomain.com/foo/bar に書き換えられます。前もって感謝します。

4

1 に答える 1

1

まず、このルールには問題がある可能性があります。

RewriteRule   ^simple$ /foo/bar/$1 [PT]

^simpleすべてのリクエストは . で始まるため、式はおそらく一致しません/

$1ルールの右側で使用していますが、これを入力する左側には一致グループがありません。これは、 へのリクエストは/simpleあなたを取得します/foo/bar/が、 へのリクエスト/simple/somethingelseはルールに一致しないことを意味します。これがあなたが望む動作でない場合、おそらく次のことを意味します:

    RewriteRule   ^/simple(.*)$ /foo/bar$1 [PT]

(欠落している先頭/もここに追加したことに注意してください)。

これらの変更を行うことで、このルールは私のシステムで期待どおりに動作します。

最後に、RewriteLogand 設定を有効にするとRewriteLogLevel(2.4 より前のバージョンの Apache を想定)、正確に何が起こっているかの詳細を明らかにするのに役立ちます。

于 2012-04-23T16:01:10.587 に答える