0

私は関連する質問を熟読しましたが、この小さな警告を理解することはできません。mod_rewriteを介して末尾のスラッシュを削除するために私が見た黄金律は次のとおりです。

RewriteRule ^(.*)/$ /$1 [R,L]

これはすべて問題なく良好ですが、前のディレクトリ構造が存在する場合はそれを取り除きます。したがって、アプリケーションのブートストラップがホストされたパスのルートで実行されている場合は機能しますが、サブディレクトリにある場合は機能しません。

http://localhost/path/to/application/pretty/query/string/

になる

http://localhost/pretty/query/string注;スラッシュは削除されますが、ディレクトリも削除されます

現在のディレクトリの場所を保持するにはどうすればよいですか。前の例では、期待されるものが返されます。

http://localhost/path/to/application/pretty/query/string


アップデート

最終的に、これは一貫性のためです。末尾のスラッシュを追加または削除するのが適切です。私はどちらかのアプローチを機能させることを試みている間を行ったり来たりしていますが、成功していません。

末尾のスラッシュを追加または削除する回答は許容されます。

4

1 に答える 1

0

さて、私は追加するためにそれを解決しました:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /_dev/_projects/mf_frame

RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1/ [R,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) ?routePath=$1 [L,QSA]

RewriteBaseディレクティブがありませんでした。私はもう一度行ってストリッピングします。もっとうまくできることがあれば、私のアプローチの代替案を自由に提案してください。

于 2011-05-16T18:37:40.707 に答える