1

私はphpでアプリを開発していますが、かなり広い.htaccessリダイレクトを設定する必要があります。私はいくつかの読書をして、自分でRewriteCondsを書こうとしましたが、それは私の給与水準を少し上回っています-より多くの経験を持つ誰かが助けてくれることを願っています。これが私が達成しようとしていることです:

  • アプリはに含まれていwww.example.com/app/ます。このディレクトリの上には何もリダイレクトしないでください。
  • このディレクトリには、アクセスする必要のあるファイルがいくつか存在します。現在、これらは/app/includes/*/app/sb_pages/*です。これは将来変更および拡張されるため、既存のすべてのファイルを網羅する洗練されたソリューションが必要です。ファイルが見つからないときにこれらのディレクトリ内でリダイレクトがトリガーされる場合は問題ありません。私が気にするのは、リダイレクトトリガーなしで内のファイルにアクセスできることだけです。
  • /app/index.php他のすべてのリクエストは、クエリ文字列で渡される末尾のURLを使用してにリダイレクトする必要があります。たとえば、へのリクエストはに/app/path1/path2/リダイレクトする必要があります/app/index.php?path=path1/path2/
  • リダイレクトは透過的であってはなりません。ユーザーがリクエストしたとき/app/path1/path2/、私は彼らがそこに残っていると信じてもらいたいです。URLがに変更されることはありませ/app/index.php?path=path1/path2/

わかりやすくするために、ここで詳しく説明するいくつかのケースを示します。

  • /app/includes/sidebar.phpリダイレクトしないでください。
  • /app/includes/nothing.html存在しません-リダイレクトはOKです
  • /app/path1/path2/にリダイレクトする必要があり/app/index.php?path=path1/path2/ます。ユーザーには、現在のURLがとして表示され/app/path1/path2/ます。

私はそれを明確に説明し、ほとんどの質問を先取りしたことを願っています。説明が必要な場合は、遠慮なくお問い合わせください。助けてくれてありがとう!

4

1 に答える 1

6

これをドキュメントルートの.htaccessファイルに追加してみてください。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app/(.*)$ /app/index.php?path=$1 [L,QSA]

(ファイルではなく)既存のディレクトリへのアクセスもリダイレクトされないようにするRewriteCond %{REQUEST_FILENAME} !-d場合は、ルールの上に上記を追加することに注意してください。

于 2012-06-20T17:44:52.670 に答える