mod_rewrite について質問です。

あるディレクトリの .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

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2006/03/14 18:48:49
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:znz No.1

回答回数193ベストアンサー獲得回数25

ポイント50pt

「[^\?\./]」で「?」と「.」と「/」以外の文字という意味なので、すべての場合にrewriteしたいのなら、任意の文字を意味する「.」を使って

RewriteRule ^(.+)$ ?$1

にすれば良いと思います。

id:kamikage

ありがとうございます。今確認したのですが、どうもエラーになってしまいます・・・再度確認してみます。

2006/03/14 16:31:55
id:kuippa No.2

回答回数1030ベストアンサー獲得回数13

ポイント35pt

こちらの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も併記してやるのがお作法のようです。

id:kamikage

すみませんが意図することと違います・・・(涙)

2006/03/14 16:37:52
  • id:kuippa
    あれ、意図されることと違いましたか?


    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCondを書くと、既存ファイル、ディレクトリパス以外はRewriteRuleに落ちるので、abcde.htmlでアクセスすればパラメータとしてabcde.htmlがわたされるとおもうのですが?
  • id:bonlife
    この件、結局上手くいったのかどうかが気になります。

    id:kuippaさんの説明が意図と違う、と判断されてしまったのはは、RewriteRuleの後半部分(index.php以降)が例と異なっていたせいではないでしょうか。
    または、考慮しなくて良いとされていた内容を考慮してしまっていたのが問題だったのでしょうか。

    個人的には不必要な値をプログラムに渡したくないので、以下のように記述し、値を制限した方が良いと思いました。
    .htaccess素人なので定石にそぐわないかもしれませんが、参考になると幸いです。

    RewriteRule ^([0-9A-Za-z]+(\.htm[l]?)?)$ ?$1
  • id:nandedarou
    「index.cgi以外は他のファイルや下層ディレクトリなども一切設置することはありません」とあるので、kuippaさんのでも、問題ないハズ。

    でも、もしかして、abcde.htmlのファイルが同じディレクトリにあるのではないでしょうか?(質問文とは矛盾しますが…)そうだとすると、kuippaさんのように書くのは意図と正反対ということになりますね。

    いずれにせよ、回答者は、もらうポイントとは比べものにならないほどの時間と情熱と努力で回答を書いている人が多くいます。回答者は、頑張った分、結果がどうだったか非常に気になるんですよね。質問者は、その時間と情熱と努力に答える為、丁寧に状況や結果を報告して欲しいと思う今日この頃です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません