15

私はPHPで独自のMVCフレームワークを作成しました。これは、次の形式のURLを使用します。

/controller/method/param1/param2/param...

「デフォルト」メソッドを無視できるように(デフォルトでindex())作成したので、これはのようなURLになります/controller//param1/param2/param...。たとえば、次のURLはコントローラーを/view//panel-glide/3呼び出します。index('panel-glide', 3)view

これは問題なく機能しますが、検索エンジンや一部の古いブラウザが二重スラッシュを表示すると、実際に使用されたことがないと思うので、気が狂う可能性があるのではないかと心配しています。

これを使用して遭遇する可能性のある問題を誰かが知っていますか?

4

2 に答える 2

17

WebMastersには、2つのスラッシュを持つことの危険性について説明している既存の回答があります。Apacheについて多くのことを説明していますが、アイデアは一般的に適用できるはずです。

本質的に、私はそれが推奨されているとは思いません。/foo/barそして/foo//bar実際には2つの完全に異なるパスである必要があります。それぞれのスラッシュは重要であり、その標準化を回避しようとする試みは、あなたを噛むために戻ってくるはずです。

回答で述べられているように、相対パスが失敗するという非常に現実的な危険もあります。一部のブラウザはからの相対パスがであると正しく認識しますが、他のブラウザはダブルスラッシュを単一のパスとして扱い、を選択します。../../fizz/foo/bar//baz/foo/bar/fizz/foo/fizz

それに、面白そうだと思います。

于 2012-06-29T04:56:03.817 に答える
3

Apacheは、複数のスラッシュを単一のスラッシュとして扱います。RewriteRulesこれは、たとえば、次のようなルールがある場合などに影響します。

RewriteRule ^user/(.*)/([0-9]+)$ /user.php?id=$2 [QSA,L]

それは次のようなリンクをキャッチしますが、それを次のように扱うためuser/nomaD/500キャッチしませんuser//500user/500

つまり、特定のタイプでない限り、すべてのパラメーターを左にシフトしてparam1処理するため、セットアップは機能しないと思います。methodこれは特定のケースには影響しないと思いますが、多くの場合、これはを使用することのデメリットになり//ます。

于 2012-06-29T04:58:20.953 に答える