0

PHPを使用してWebサイトを開発しています。
そして、URLの最初のディレクトリ名をphpのパラメーターとして使用したいと思います。

次の書き換えルールがあります。

RewriteRule ^([a-z][a-z])/(.*)$ xyz/$2?first-dir=$1 [L]

にアクセスするとhttp://example.com/aa/b/
/xyz/b/index.phpパラメータで実行されますfirst-dir=aa
また、ブラウザのアドレスバーにあるURLはhttp://example.com/aa/b/(入力URLと同じ)です。

しかし、http://example.com/aa/b(テーリングなしで/)アクセスする
と、アドレスバーのURLは になりhttp://example.com/xyz/b/?first-dir=aaます。
この書き換えられた URL をユーザーに表示したくありません。

なぜこうなった?
この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

これはmod_dirでありDirectorySlash、URIに干渉します。Apacheは、URIがディレクトリを指していることを確認したが、末尾のスラッシュが欠落している場合、クライアントを末尾のスラッシュと同じURIにリダイレクトします。ルールが適用されています。mod_dirはそれ/aa/bがディレクトリであると認識しているため、ブラウザをにリダイレクトし/aa/b/ます。ルールの末尾のスラッシュを確認する必要があります。

RewriteRule ^([a-z][a-z])/(.*?)/?$ xyz/$2/?first-dir=$1 [L]
于 2012-09-29T18:19:46.173 に答える
0

/ を含む URLindex.phpが実行される場合

修正されたバグ: RewriteRule ^([a-z][a-z])/(.*)$ xyz/$2/index.php?first-dir=$1 [L]

于 2012-09-28T16:31:33.470 に答える