あるディレクトリの .htaccess に
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
「[^\?\./]」で「?」と「.」と「/」以外の文字という意味なので、すべての場合にrewriteしたいのなら、任意の文字を意味する「.」を使って
RewriteRule ^(.+)$ ?$1
にすれば良いと思います。
こちらのURLを参照してみてください。
http://exam.su-jine.com/mod_rewrite/mod/rewrite.html
私もあまり深く存じているわけではないのですが、
DirectoryIndex index.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php?u=$1
というようなパターンで、RewriteCondも併記してやるのがお作法のようです。
すみませんが意図することと違います・・・(涙)
ありがとうございます。今確認したのですが、どうもエラーになってしまいます・・・再度確認してみます。