プロが教える店舗&オフィスのセキュリティ対策術

例えば・・・

以下の処理(【1】と【2】)を.htaccess内で処理したいです。

【1】

http://example.com/1.html



http://example.com/kkk.cgi?mode=main&cno=1

------------------

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9]+)\.html$ kkk.cgi?mode=main&cno=$1 [L]

------------------

上記で変換は出来るのですが、これだと静的URLと動的URLで「同じコンテンツが表示(重複ページ扱い=コピーページ扱い)」されます。

やりたいことは、CGIにアクセスすると「301リダイレクトで静的ページを表示する」という仕様にしたいと考えております。尚、パラメータ無しの直接アクセス(kkk.cgi)は、同フォルダのindex.htmlに301リダイレクトできれば最高です。


【2】

http://example.com/kkk.cgi?mode=main&cno=1

↓301リダイレクト

http://example.com/1.html

------------------

RewriteCond %{QUERY_STRING} ^mode=main&cno=(\d+)$
RewriteRule ^kkk\.cgi$ %1\.html? [R=301,L]

------------------

しかし【1】と【2】の処理を同時に行うとループとなります。phpなどを一切使わず、.htaccessの記述だけでこの問題をクリアできる方、何卒ご指導お願いいたします。

A 回答 (1件)

RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^([0-9]+)\.html$ kkk.cgi?mode=main&cno=$1 [L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^mode=main&cno=(\d+)$
RewriteRule ^kkk\.cgi$ %1\.html? [R=301,L]

で、どうでしょうか?リライトでcgiに来たのでない場合だけリダイレクト。
    • good
    • 1
この回答へのお礼

この2日間は教えてGOOのサーバーメンテナンスの為、お礼とご報告が遅れてしまいました。まずはお陰様で無事ループせずに動作させることができました。notnotさん凄い(笑)本当にありがとうございます!

お礼日時:2015/01/28 13:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!