.htaccessにて、Perlで作成されたスクリプトのURLを以下のようにmod_rewriteで変換を行っています。
RewriteEngine on
RewriteBase /cgi/
RewriteRule ^([0-z]+)/([0-z]+)\.html$ index.cgi?mode=$1&no=$2
通常の場合、
http://example.com/cgi/index.cgi?mode=pv&no=1
といったURLが、mod_rewriteにて
http://example.com/cgi/pv/1.html
というURL形式でアクセスが可能です。
そこでやりたい事なのですが、上記のpvの箇所をpastという風に変更したいと思っています。
http://example.com/cgi/pv/1.html
http://example.com/cgi/past/1.html
スクリプト側の問題かも知れませんが、過去ログに移行したデータなどはpastになるのですが、何故かpv(現行ログ)でもアクセス出来てしまいまして、出来れば.htaccessでpastに統一したいと思っています。
そこで単純ながら、Redirect permanentを使い、
Redirect permanent /cgi/view/ http://example.com/cgi/past/
としたところ、リダイレクトはされるのですが、
http://example.com/cgi/past/1.html?mode=view&no=1
となってしまいます。
語尾のクエリ部分「?mode=view&no=1」が出ないようにしたいのですが、どのような方法があるか、ご教示頂けますと幸いです。
RewriteCond %{QUERY_STRING}なども調べて見たのですが、詳しくどう記述すれば良いかわかりませんでした。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
これでいかがでしょう。
-------------------------------------------------------------
RewriteEngine on
RewriteBase /cgi/
RewriteRule ^pv/([0-z]+)\.html$ past/$1.html [R=301,L] # この行を追加
RewriteRule ^([0-z]+)/([0-z]+)\.html$ index.cgi?mode=$1&no=$2
-------------------------------------------------------------
R=301 は、ステータスコード 301 を指定
L は、このルールがマッチしたらURL変換を終える、という指定
ご返答が遅れてすいません。
ありがとうございます!希望の動作となりました。
RewriteRule ^([0-z]+)/([0-z]+)\.html$ index.cgi?mode=$1&no=$2
RewriteRule ^pv/([0-z]+)\.html$ past/$1.html [R=301,L]
というように、記載する順を逆にしたことはあったのですが、それでもうまくいかず路頭に迷っていましたが、この記述の順序を逆にすればいいということを教えていただき助かりました!
本当にありがとうございました。
No.1
- 回答日時:
> 上記のpvの箇所をpastという風に変更したい
要するに、
http://example.com/cgi/past/1.html
に対するリクエストを、
サーバ側で、http://example.com/cgi/index.cgi?mode=pv&no=1
として処理できるようにしたい
という理解でよろしいでしょうか?
だとすると、以下のように
pv を直接梅今でしまってはいかがでしょう。
-------------------------------------------------------------
RewriteEngine on
RewriteBase /cgi/
RewriteRule ^[0-z]+/([0-z]+)\.html$ index.cgi?mode=pv&no=$1
-------------------------------------------------------------
この回答への補足
ご回答ありがとうございます。
早速試させていただきましたが、解決できませんでした。
すいません、質問内容に誤った記述がありましたので訂正させて頂きます。
現時点で以下のようにアクセスできるURLを
http://example.com/cgi/pv/1.html
以下のように/pv/の箇所を/past/へ変更したいという感じです。
http://example.com/cgi/past/1.html
実際には、
http://example.com/cgi/index.cgi?mode=pv&no=1
http://example.com/cgi/index.cgi?mode=past&no=1
この2つのURLで同じページにでアクセスできてしまうため、pastの方へ統一をしたいと思っています。
>Redirect permanentを使い、
>Redirect permanent /cgi/view/ http://example.com/cgi/past/
>としたところ、リダイレクトはされるのですが、
>http://example.com/cgi/past/1.html?mode=view&no=1
>となってしまいます。
>語尾のクエリ部分「?mode=view&no=1」が出ないようにしたいのですが、どのような方法があるか、ご教示頂けますと幸いです。
上記の/view/は/pv/の記述ミスでした。すいません。
実際には、Redirect permanentを使ってみると、
Redirect permanent /cgi/pv/ http://example.com/cgi/past/
↓
http://example.com/cgi/past/1.html?mode=pv&no=1
となり、URL最後尾に「?mode=pv&no=1」が付加されるので、これを除去したいという事を望んでいます。
Redirect permanentではこうなるのが避けられないとしたら、別の方法があればご教示いただけますと幸いです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- Oracle TOPページ以外の、301リダイレクトの記述設定について 1 2022/08/12 17:14
- その他(プログラミング・Web制作) プログラムについて。 4 2022/03/30 09:59
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
apacheでPerl CGIが作動せず、5...
-
POSTメソッドの最大容量について
-
ホームページにメールフォーム...
-
ホームページでCGIのフォームを...
-
CGIって何ですか?簡潔に教えて...
-
cgiの注釈が出来ない
-
CGI.pmはもう古い!?
-
フォームを再送信しますか?
-
入力フォーム(電話番号)
-
プロバイダのスピードは、maps...
-
3DCG
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
-
ホームページの事でおしえてく...
-
さくらサーバーにcgiフォームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
第1のPC(192.168.0.1)の/var/ww...
-
表示画面が真っ白になる場合、...
-
SSIを呼び出した元ファイルの名...
-
携帯サイトのキャリア判別
-
htmlにアクセスと同時に、あるC...
-
ログインCGI設置での500エラー
-
アクセスカウンター(counter.cg...
-
private_htmlについて
-
public_html外でCGIやPHPを動か...
-
apache2でforbiddenになってしまう
-
ステップサーバーでの.htaccess...
-
1-man.netでメールフォームの設...
-
IISのSSIの設定について
-
CGIの作成方法
-
○.datから情報を取り出し、○.ht...
-
自社サーバー異常発生。CGIがポ...
-
さくらインターネットのCGIの設...
-
INDXの振り分けでソフトバンク
-
.htaccessを用いて.cgiを.html...
-
EXCELファイルに誰がアクセスし...
おすすめ情報