2

私はこの書き換えルールを持っています

RewriteEngine On
RewriteBase /location/
RewriteRule ^(.+)/?$ index.php?franchise=$1

このURLを変更することになっている

http://example.com/location/kings-lynn

この中に

http://example.com/location/index.php?franchise=kings-lynn

しかし、代わりに私はこれを取得しています

http://example.com/location/index.php?franchise=index.php

また、手すりのスラッシュを追加すると、それが壊れます。index.php ページが表示されますが、スタイル シートや JavaScript が読み込まれません。

私は明らかに何か非常に間違ったことをしていますが、一日中 R'ingTFM と多くのオンライン入門書とチュートリアルとここでの質問を費やしているにもかかわらず、私は何をしているのかわかりません.

4

3 に答える 3

5

あなたの問題は、2回リダイレクトしていることです。

'location/index.php'正規表現に一致します^(.+)/?$

「ファイルが存在しない場合」条件を使用して、再度マッピングを試行しないようにすることをお勧めします。

RewriteEngine on
RewriteBase /location/
RewriteCond %{REQUEST_FILENAME} !-f   # ignore existing files
RewriteCond %{REQUEST_FILENAME} !-d   # ignore existing directories
RewriteRule ^(.+)/?$ index.php?franchise=$1  [L,QSA]

さらに、それを「最後の」ルールにしようとする [L,QSA] があり (注、これがどのように機能するかは完全には明らかではありません)、クエリ文字列をクエリに追加します。

location/foobar/?baz=quux  ==> index.php?franchise=$1&baz=quux

( おもう )

于 2008-11-24T16:22:59.553 に答える
3

書き換えフィルターが 2 回実行されているように思えます。最後のフラグを追加してみてください

RewriteRule ^(.+)/?$ index.php?franchise=$1 [L]
于 2008-11-24T16:24:04.950 に答える
2

ルールの自己が一致するため、それ自体が参照されます。

于 2008-11-24T16:24:39.037 に答える