私はこのApacheRewriteRuleをしばらく使用していますが、通常はすばらしい結果が得られます。
RewriteRule ^([^\.]+)/?$ index.php?$1 [L]
ユーザーがにアクセスwww.mysite.com/about-us
すると、サーバーはからのコンテンツを表示しますwww.mysite.com/index.php?about-us
。コンテンツはデータベースに保存され、クエリ文字列('about-us')を使用して各ページのコンテンツを検索します。これは最近まで問題なく機能していました。
私が構築している新しいサイトには、クエリ文字列に必要な名前と同じ名前のディレクトリ(「フォルダ」と呼びます)があります。つまり、newsite.com/folder
ディレクトリ内のインデックスファイルを探す代わりに、次のようにwww.newsite.com/folder
ルーティングする必要があります。index.php
検索パラメータとして「folder」を使用します。代わりに、私はこれを取得します:
www.newsite.com/folder/?folder
私のコードはクエリ文字列を「folder/」として解釈します。したがって、最初の問題は、URLが奇妙に見えることです。2番目の問題は、私のページが末尾のスラッシュなしで保存されていることです。
もちろん、クエリ文字列を受け取った後にスラッシュを削除するようにコードを調整することもできますが、その場合、のようなフォルダ構造をエミュレートするURLを作成するのが難しくなる可能性がありますwww.newsite.com/user/images/month
。そして、それでも私がすでに持っているファンキーなURLを取り除くことはできません。
URLをきれいにし、サーバーがディレクトリ内のファイルを検索しないようにする簡単な解決策があると思います(ユーザーが明示的にhtmlまたはphpファイルを要求しない限り)。ご入力いただきありがとうございます。