サーバーが domain.com/index を domain.com/index.php として解釈する際に問題があります。これは私の URL 構造を台無しにします。
次の内容で .htaccess ファイルを作成しました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
したがって、URL domain.com/index/about を入力すると、 index/about から取得したいと思います$_GET['url']
。しかし、代わりに空白です。domain.com/foo/bar のように、index で始まらない他の URL を入力すると、期待どおりの結果が得られます。
RewriteCond %{REQUEST_FILENAME} !-f
これは、同じファイル名のファイルが存在する場合、書き換えを無視するためであると理解しています。
したがって、URL にインデックスやその他のディレクトリまたはファイル名という単語が含まれていない限り、私の RewriteRules は必要な結果をもたらします。現在のディレクトリには他のディレクトリやファイルがないため、それで問題ありません。
質問は次のとおりです。filename だけでなく filename.php を無視するように、より具体的にすることはできますか? domain.com/index/aboutは機能するはずですが、 domain.com/index.php/aboutは機能しないことを意味します。
副次的な質問: domain.com/index/aboutが機能しないのはなぜですか? index/about というディレクトリも index/about というファイルもありません。ファイル内にディレクトリを含めることができないため、index/somethingをindex.php/somethingとして解釈するのはなぜですか。