.htaccessに標準のCMSのようなRewriteRule
が設定されています。
RewriteRule ^(.+)$ index.php?slug=$1
ルートディレクトリにfoo
というディレクトリがあるとします。何らかの理由で、ページにアクセスするとリダイレクトが発生します:
http://example.com/foo
はhttp://example.com/foo?slug=foo
にリダイレクトします
ディレクトリを削除すると問題は解決しますが、残念ながらオプションではありません。誰かが回避策を知っていますか?
試して、
DirectorySlash off
リダイレクトを生成する書き換えではなく、mod_dir
です。
RewriteRule
putの前:
RewriteCond %{REQUEST_FILENAME} !-d
これは、ディレクトリfoo
が存在するかどうかをチェックします。存在する場合は、書き換えルールを作成しません。
また、リダイレクト先foo?slug=foo
からindex.php?slug=$1
にどのように到達したかわかりません。
確認しましたが、欠落している/
を修正するには、このルールセットの前にもう1つのルールセットが必要です
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ index.php?slug=%{REQUEST_URI} [QSA,L]
これは魅力のように機能するはずです。