• ベストアンサー

mod_rewriteについての質問です

mod_rewriteについての質問です 画像の動的ページを静的ページに見せたいのですが、 http://aaa.com/gazou/image.cgi?http://aaa.com/ccc/半角英数文字/半角英数文字.jpg をmod_rewriteで静的ページに.htaccsesにて設定するにはどのように書けばよいでしょうか? こんな感じかなと思ってんですがうまくいきません。 RewriteEngine on RewriteRule ^/gazou/([0-9A-Za-z]+)/([0-9A-Za-z]+)\.html$ gazou/image.cgi?http://aaa.com/ccc/$1/$2.jpg [L] わかりにくくてすみません。 以上よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

どんなアドレスをどんな風に変換したいのか、例をあげていただけますか? 質問者さまの記述だと、htmlが以下のように変換されることになりますが…。 gazou/ABC123/DEF456.html    ▽ gazou/image.cgi?http://aaa.com/ccc/ABC123/DEF456.jpg

junkcpu
質問者

お礼

わかりにくい質問にご返答いただきありがとうございます。

junkcpu
質問者

補足

ご返信ありがとうございます。 http://aaa.com/bbs/image.cgi?http://aaa.com/gazou/半角英数字/半角英数字.jpg をとりあえずHTMLで終わるようにしたいです。 例えば、http://aaa.com/bbs/半角英数字/半角英数字.html 以上よろしくお願いいたします。

その他の回答 (1)

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.2

一応書きますが、何か勘違いされているかも知れません。 普通はSEO対策のため、表面上は静的URIにして、実際にリンクして来たらcgiに引き渡すようmod_reqriteで動的URIに内部で変換してやります。 質問者さまの例ですと、わざわざimage.cgiを通す必要はなく、最初から ~半角英数字.html でリンクしてもらった方がよいのでは? (bbsディレクトリの.htaccessに記述) ----------------------------------------- RewriteEngine on RewriteCond %{QUERY_STRING} ^http://example.com/gazou/([a-zA-Z0-9]+)/([a-zA-Z0-9]+).jpg$ RewriteRule ^bbs/image\.cgi bbs/%1/%2.html [L] ------------------------------------------ ※サンプルを記述する場合、実在するアドレスではなく、example.(com|org|net) を使用するよう決まっていますので そのように書き換えてあります。

junkcpu
質問者

お礼

書き込みありがとうございました。

junkcpu
質問者

補足

やっぱり404エラーがでてしまいました。 とりあえずいろいろためしてみます。 ご教授ありがとうございました。

関連するQ&A

  • mod_rewriteでの'?'表示

    http://www.example.com/search.cgi?a=mypage&b=go&c=1&d=2 を、 http://www.example.com/mypage/go/search?c=1&d=2 に変えたいですが、どのようにすればよいのでしょうか? htaccessでは・・・ Options +FollowSymlinks RewriteEngine on RewriteRule ^/([0-9A-Za-z]+)\/([0-9A-Za-z]+)\/search?c=([0-9A-Za-z]+)&d=([0-9A-Za-z]+)$ /search.cgi?a=$1&b=$2&c=$3&d=$4 [L] にしてもアクセスできません… APACHEマニュアルでは「?」は文字数指定と言う文法に なるらしく、「?」を表示させたいです。 http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule どうすればよろしいでしょうか?ご教示ください。

  • mod_rewriteで

    mod_rewriteで /dir/aaa/bbb/form.html  を  /dir/form.php?id1=aaa&id2=bbb にする書き方を教えてください いまのところ RewriteRule ^/dir/([0-9A-Za-z]+)/([0-9A-Za-z]+)/form.html /dir/form.php?id1=$1&id2=$2 [L] としていますが上手く出来ていないようです

  • mod_rewriteでアドレスを書き換えたい

    mod_rewriteでアドレスを書き換えたい思っています。 xamppでテストしていますがうまくいきません。 mod_rewrite.soの#は外しています。(つまり、.htaccess以外の設定はできていると思います) 【やりたい事】 localhost/test/index.php?p=test を  ↓ localhost/test/i/test でアクセスしたいです。 【参考にした情報】 http://www.sample.com/cgi-bin/sample/sample.cgi?a=123&b=456 というURLを静的なアドレスでアクセスできるように以下のように設定します。 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] を言うのを見つけました。 【試したこと】 .htaccessをつくり RewriteEngine on RewriteRule ^/test/i/([0-9A-Za-z)]+)$ /test/index.php?p=$1 [L] と記入 【結果】 Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 と表示されました。 ------------------------------------------------------------------ localhost/test/i/testでアクセスするには、.htaccessをどう書けばいいのでしょうか? 疑問1.xamppでlocalhostでmod_rewriteができるのだろうか? 疑問2.参考にした情報のRewriteRuleの"^"がわからない。正規表現の"^"とは文頭にマッチすると思います。この場合の文頭とは? よろしくお願いします。

  • mod_rewriteの書き方について

    よろしくお願いします。 サーバーをhttp://80codeを使っています。 今回、mod_rewriteを使って静的アドレスにしようとしていますが、 404エラー(見つかりません)がでてしまい、うまく表示されません。 設定が間違っていますでしょうか? http://repo.teki2.com/に両方のファイルとも設置しています。 接続しに行っているアドレスは、http://repo.teki2.com/1/ です。 http://repo.teki2.com/index.php?mode=1 だとうまくいきます。 .htaccessの内容 RewriteEngine on RewriteRule ^/([0-9a-zA-Z]+)/$ /index\.php?mode=$1 [L] index.phpの内容 <?php echo $mode; ?> よろしくお願いします。

    • 締切済み
    • CGI
  • mod_rewrite設定について

    mod_rewrite設定について mod_rewriteでcgiに渡す引数の一部のみを書き換えることは可能でしょうか。 具体的には下記のような挙動を実現したいです。 http://mydomain.com/test.cgi?status=true&action=1 ↓ http://mydomain.com/test.cgi?status=false&action=1 2つ目の引数は複数のパターンが想定されています。 下記のようなrewriteの設定を試してみましたが リダイレクトされませんでした。 ~~~~~~~~~~~~~~~~~~~~~ RewriteEngine on RewriteRule ^/test.cgi?status=true(.*) http://mydomain.com/test.cgi?status=false$1 [QSA] ~~~~~~~~~~~~~~~~~~~~~ 助言をいただけないでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • mod_rewriteについて教えてください。

    mod_rewriteについてお願いします。 「a」と「b」というフォルダにそれぞれ「index.html」「test.html」が入っています。「a」と「b」で「index.html」「test.html」の内容はちがいます。 わたしが一番望んでいるのは http://example.com/a/以下にアクセスがあった場合 http://example.com/b/以下にリダイレクトさせるというものです。 例) http://example.com/a/test.htmlにアクセスがあったらhttp://example.com/b/test.htmlにリダイレクト。 ------------------------------------------------------------ Options +FollowSymLinks AddHandler cgi-script htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/a/$ /b/$1 [R=302,L] </IfModule> ------------------------------------------------------------ としてみましたが、リダイレクトされません。 ちなみに RewriteRule ^$ /b/$1 [R=302,L] と書くと、http://example.com/にアクセスがあった場合 http://example.com/b/にリダイレクトされましたので mod_rewriteには対応しております。 ご教授のほど、よろしくお願いいたします。

  • mod_rewriteを適用して

    mod_rewriteを適用したところ、リンク先HTMLがおかしくなりました。 http://xxx.jp/rewrite.php?p=1 ↓ http://xxx.jp/rewrite/1 とするようにルールを以下のように設定しました。 RewriteRule ^/rewrite/([0-9A-Za-z)]+) /rewrite.php?q=$1 すると、ドキュメントルート直下の他のファイル(hoge.php)へのリンク先HTMLが http://xxx.jp/rewrite/hoge.php となってしまいます。 なぜこうなってしまうのでしょうか?

  • httpsでmod_rewriteができない

    はじめまして。 Linux環境で、apacheのhttp.confにmod_rewriteを記載し、httpsとhttpを切り替えたいと思っています。 httpd.confに以下のように記述しています。 <IfModule mod_rewrite.c> RewriteEngine on  #(1)httpで/aaaa/bbbbにアクセスされたときにhttps://~に変えたい RewriteCond %{REQUEST_URI} ^/aaaa/bbbb RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]  #(2)httpsで/cccc/ddddにアクセスされたときにhttp://~に変えたい RewriteCond %{REQUEST_URI} ^/cccc/dddd RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R] </IfModule> 上記(1)のhttpでのアクセス時には、mod_rewriteが効いてhttpsへ切り替えられるのですが、 上記(2)のhttpsでのアクセス時には、mod_rewriteが効いていないようでhttpへ切り替えられません。 rewriteログを見てみると、当サイトへhttpでアクセスした場合にはログが出力されますが、 httpsでアクセスした場合には出力されません。 そもそもhttpsでのアクセスの場合にhttpd.confのmod_rewriteが効いていないようです。 ですが、これに対しどこを調査すべきかが分かっていません。 SSLの設定自体は出来ていると思っていて、 https://xxxx.jpのようにアクセスするとちゃんとページが表示されます。 どの当たりに問題がありそうでしょうか? 解析のヒントを頂けたらと思います。 宜しくお願い致します。

  • mod_rewriteに適用したくないファイルがある場合は?

    RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z_)]+)\.htm$ http://www.****.com/$1.php [L] ↑のようにhtaccessでphpをhtmに見せているんですが、 1.フォルダ内のphpファイルでも一部にこれを適用したくない場合はどのように書けばいいのでしょうか? 2.この.htaccessファイルがある下層のフォルダにはmod_rewriteを適用したくない場合はどのように書けばいいのでしょうか? (.htaccessの効果って下層フォルダにも効いてしまいますよね?) どちらかだけでもいいので、分かる方いらっしゃれば手助けしていただければうれしいです。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • mod_rewriteについて

    SEOに効果があるのかも賛否両論ですが.htaccessに以下のような指定で 拡張子がphpのものをhtmlに変更しました。 RewriteRule ^([A-Za-z0-9]+).html$ $1.php [L] ○○.htmlにアクセスがあれば実際には○○.phpを表示させるという ことで成功はしたのですが○○.phpにアクセスしても普通にページが 表示されてしまいます。 ロボットがきてhtmlとphpと同内容があればなにか問題があるのかと 思い(根拠がない勝手な妄想ですが)○○.phpにアクセスがあれば実際に 表示するのは○○.phpですが○○.htmlへリダイレクトさせたいと 思っているのですがどうやれば可能でしょうか? また実際にサーバーにアップしてあるファイルの拡張子はphpなので すがmod_rewriteでこのような設定をしただけでロボットにhtmlとして 認識されるのでしょうか? mod_rewriteは初めて使うもので希望の動作に必要性があるのかすら よくわからない状況なのですが詳しい方がおりましたら是非ご教授を お願い致します。