2012-04-23 8 views
1

私は通常、mod_rewrite条件を.htaccessファイルに入れますが、これはhttpd.confファイルに入れなければならない場合です。 私がやりたいことは単純だと思うので混乱しています: サイトのルートはネストされたディレクトリです:mydomain.com/foo/bar/ それはちょうどそのようにする必要があります。 私はルールを書いて人が入力できるようにしたい: mydomain.com/simpleそれはmydomain/foo/barのコンテンツを表示する また、人がサイトをクリックすると、mydomain.com/simple/何らかの他のページ構造が維持される。人のタイプは、それが 何午前mydomain.com/foo/barするために、ブラウザにURIを書き換えmydomain.com/simpleとき、このルールを使用して、しかしApache mod_rewriteが名前を永続しない

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

: 私が得ている最も近いはこれです私は間違っている? ありがとうございます。

答えて

1

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

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

すべての要求が/を開始しますので、表現^simpleはおそらく、一致しません。

ルールの右側に$1を使用していますが、左側にはマッチグループがありません。つまり、/simpleのリクエストは/foo/bar/になりますが、/simple/somethingelseのリクエストはルールと一致しません。

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

(私はここにも欠けている主要な/を追加したことに注意してください):これはあなたが望む動作ではない場合、あなたはおそらくこれを意味します。

これらの変更が加えられたことで、このルールは自分のシステム上で動作すると予想しています。

最後に、RewriteLogをオンにしてRewriteLogLevel(Apacheの2.4より前のバージョンを前提とする)を設定すると、何が起きているかの詳細が明らかになります。

関連する問題