html5 pushState() を使用して URL 構造を保持し、信頼性の高いページのリロードなどを容易にする ajax 駆動の Web サイトを構築しています。末尾のスラッシュがなく、いくつかにリダイレクトされます
"domain.com/index.php?page=ディレクトリパス"
したがって、現在、私のリクエストは次のように翻訳されています。
domain.com/Folder => domain.com/index.php?page=Folder
domain.com/Folder/ 、 domain.com/folder、 domain.com/folder/ => (デフォルト、書き換えなし)
これは、私の .htaccess ファイル (ドメイン ルートにある) によって行われ、次のコードがあります。
# Enable Rewriting
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^((/?[A-Z][A-Za-z0-9]*)+[^/])$
RewriteRule ^((/?[A-Z][A-Za-z0-9]*)+[^/])$ index.php?page=$1
「Folder」という名前の空のディレクトリを追加し、ブラウザで「domain.com/Folder」にアクセスするまで、これはうまくいきました。
以前は、「domain.com/Folder」は期待されるコンテンツ (「domain.com/index.php?page=Folder」) を提供し、「domain.com/Folder/」は 404 エラーを提供していました。ドキュメント ルートに「Folder」という名前のディレクトリはありませんでした。
これで、私の予想される結果は次のようになりました:
ブラウザは URL バーに「domain.com/Folder」を表示し、サーバーは「domain.com/index.php?page=Folder」のコンテンツを配信します (「Folder」が存在しない場合と同じ) )
しかし代わりに:
ブラウザは "domain.com/Folder?page=Folder" を表示します
ここで私が間違っていることを誰かが指摘できますか? また、可能であれば、どうすれば修正できますか?
*他のディレクトリに他のhtaccessファイルはありません。
編集:永続的なリダイレクト [R=301] を強制すると、スキームは正常に機能しているように見えますが、残念ながら、ブラウザーのアドレス バーの URL が変更されます。