0

私はこの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ファイルを要求しない限り)。ご入力いただきありがとうございます。

4

1 に答える 1

0

「.htaccess」ファイルの先頭に「DirectorySlashOff」を追加します

私は同じ問題を抱えていて、DirectorySlashのドキュメント( http://httpd.apache.org/docs/2.2/mod/mod_dir.html)を単に参照している同様の投稿を見つけました

于 2013-04-05T07:30:34.450 に答える