• 締切済み

htaccessで静的→動的処理、動的→静的301

例えば・・・ 以下の処理(【1】と【2】)を.htaccess内で処理したいです。 【1】 http://example.com/1.htmlhttp://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の記述だけでこの問題をクリアできる方、何卒ご指導お願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.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に来たのでない場合だけリダイレクト。

関連するQ&A