http://www.ooo.com/cgi-bin/my_data/my_data.cgi?action=search_all_lists&cat=123
というアドレスを
http://www.ooo.com/search_all_lists/cat/123.html
というアドレスで表示するには、.htaccessにどう記述すればよいでしょうか?
もしそれで表示が無理な場合、どのようなアドレスにしたら表示可能でしょうか?
また.htaccessはmy_data.cgiと同じディレクトリに置けばいいのでしょうか?
cat も変数なんでしょうかね?
RewriteEngine on
RewriteRule ^/([^/]+)/([^/]+)/([^/]+)\.html$ /cgi-bin/my_data/my_data.cgi?action=$1&$2=$3 [L]
でどうでしょう。
cat が変数でなければ
RewriteEngine on
RewriteRule ^/([^/]+)/cat/([^/]+)\.html$ /cgi-bin/my_data/my_data.cgi?action=$1&cat=$2 [L]
また、この場合この Rewrite を書いた .htaccess を置くのはドキュメントルートです。
http://www.ooo.com/ の index.html を本来置く所、と言ってわかるでしょうか…
ここの説明が分かりやすいです。
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html
RewriteEngine on
RewriteRule ^/cgi-bin/sample/([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ /cgi-bin/sample/sample.cgi?a=$1&b=$2 [L]
すると、http://www.sample.com/cgi-bin/sample/123/456.html にアクセスすると、
http://www.sample.com/cgi-bin/sample/sample.cgi?a=123&b=456 にアクセスしたのと同じ結果が返るようになります。
を参考にすると、
http://www.ooo.com/search_all_lists/cat/123.html にアクセスすると、
http://www.ooo.com/cgi-bin/my_data/my_data.cgi?action=search... にアクセスしたのと同じ結果が返るようにするなら
RewriteEngine on
RewriteRule ^/cgi-bin/my_data/([0-9A-Za-z]+)/cat/([0-9A-Za-z)]+)\.html$ /cgi-bin/my_data/my_data.cgi?action=$1&cat=$2 [L]
で、どうでしょう。
やってみたのですが、だめでした・・・サーバーは問題ないようなので、記述方法だとは思うのですが。
#RewriteEngine on
#RewriteRule "/cgi-bin/my_data/my_data.cgi?action=search_all_lists&cat=123" "/search_all_lists/cat/123.html"
fonya3 さんが挙げておられるパターンを少しいじっただけですが、
RewriteRule ^/cgi-bin/my_data/(.+)/cat/([0-9A-Za-z)]+)\.html$ /cgi-bin/my_data/my_data.cgi?action=$1&cat=$2 [L]
・・・とかだといかがでしょうか。
多分、一つ目のマッチングで "_" が含まれていないのがうまくいかなかった原因かな、と・・・・。
それでも NG なようでしたら、
RewriteRule ^/cgi-bin/my_data/search_all_lists/cat/([0-9A-Za-z)]+)\.html$ /cgi-bin/my_data/my_data.cgi?action=search_all_lists&cat=$1 [L]
とか、
RewriteRule ^/cgi-bin/my_data/(.+)/cat/123\.html$ /cgi-bin/my_data/my_data.cgi?action=$1&cat=123 [L]
あたりからぼちぼちやってみるとうまく行く場合のヒントがつかめるかもしれません。
うまくいきません・・・。私の考える記述も皆さんのとほとんど同じなので、やはりサーバー側の問題なのでしょうか。サーバー会社の人に問い合わせたら「使えます」っていう回答だったのですが。.htaccessはmy_data.cgiと同じディレクトリに置けばいいのでしょうか?
cat も変数なんでしょうかね?
RewriteEngine on
RewriteRule ^/([^/]+)/([^/]+)/([^/]+)\.html$ /cgi-bin/my_data/my_data.cgi?action=$1&$2=$3 [L]
でどうでしょう。
cat が変数でなければ
RewriteEngine on
RewriteRule ^/([^/]+)/cat/([^/]+)\.html$ /cgi-bin/my_data/my_data.cgi?action=$1&cat=$2 [L]
また、この場合この Rewrite を書いた .htaccess を置くのはドキュメントルートです。
http://www.ooo.com/ の index.html を本来置く所、と言ってわかるでしょうか…
原因が分かりました。最初の「/」がいりませんでした。色々と試していたのですが、「/」とは盲点でした。たぶん、「/」の位置さえ気をつければ、皆様の記述はほとんど使えると思います。最終的には、bewindさんのを利用させていただきました。皆様、ありがとうございました。また、わかりやすくお答えいただいて感謝感激です。
原因が分かりました。最初の「/」がいりませんでした。色々と試していたのですが、「/」とは盲点でした。たぶん、「/」の位置さえ気をつければ、皆様の記述はほとんど使えると思います。最終的には、bewindさんのを利用させていただきました。皆様、ありがとうございました。また、わかりやすくお答えいただいて感謝感激です。