2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2009 | 01 | 02 | 03 | 04 |
2010 | 01 | 06 |
2011 | 01 |
2007-05-11
RewriteRuleをいろいろ試す会:RewriteCondを使う
http://q.hatena.ne.jp/./1178869014
Apacheのmod_rewriteの質問です。mod_rewriteを使って
へのアクセスを
http://aaa.com/index.php?key=キーワード
へ転送したいのですが(キーワードは日本語ですがエンコード済み)、
RewriteRule ^([^/]+)/?$ index.php?key=$1
と書くと、
などのファイルへのアクセスも転送されてうまく動かなくなってしまうようです。
こういう場合はどう書けばいいのでしょうか?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond で適用条件を指定してやればどうでしょうか。
http://q.hatena.ne.jp/./1142313466
mod_rewrite について質問です。
RewriteEngine on
RewriteRule ^([^\?\./]+)$ ?$1
を記述しています。
これでクエスチョンマークを省略した形でクエリを受け取ることはできました。
例:http://xxx.com/mylink/abcde にアクセスされた場合、mylink/index.cgiにて「abcde」をクエリとして受け取る
ただこの形ですと、例えば http://xxx.com/mylink/abcde.html にアクセスすると、直接URLを探しに行ってしまいます。
「abcde.html」という文字列を、ファイル名ではなくクエリとして受け取りたいのですが、そのようなことは可能でしょうか?
動的リソースはrewriteできないということも聞いたのですが、もし可能であればズバリのコードを教えて下さいますでしょうか。
ちなみに.htaccessを配置してあるディレクトリにはindex.cgi以外は他のファイルや下層ディレクトリなども一切設置することはありませんので、"この場合だけは実在のファイル(URL)に飛ばしたい"というようなことは一切考慮して頂かなくても結構です。
宜しくお願いします。m(_ _)m
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCondを書くと、既存ファイル、ディレクトリパス以外はRewriteRuleに落ちるので、abcde.htmlでアクセスすればパラメータとしてabcde.htmlがわたされるとおもうのですが?
RewriteRule ^([0-9A-Za-z]+(\.htm[l]?)?)$ ?$1