質問: Apacheのmod_rewriteの質問です。mod_rewriteを使って キーワード キーワード/ へのアクセスを キーワード へ転送したいのですが(キーワードは日本語ですがエンコード済み)、 RewriteRule ^([^/]+)/?$ index.php?key=$1 と書くと、 などのファイルへのアクセスも転送されてうまく動かなくなってしまうようです。 こういう場合はどう書けばいいのでしょうか?
回答: ``` RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/?$ index.php?key=$1 ``` RewriteCond で適用条件を指定してやればどうでしょうか。 !-f は存在するファイル名にはルールを適用しない !-d は存在するディレクトリ名にはルールを適用しない Apache module mod_rewrite