• 締切済み

htaccessの制御で500エラーが出る

htaccessで、メンテナンス画面とhtmlファイルのままPHPを実行する記述を 同時に書きたいのですが、そうするとIP除外していない人に500エラーが出ます。 ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx RewriteRule ^.*$ - [R=503,L] </IfModule> Action myphp-script /php.cgi AddHandler myphp-script .php .html さくらのレンタルサーバーですので、"AddType application/x-httpd-php .php .html"ではなく 上のように書くとhtmlでPHPを実行できます。 この記述のままアクセスすると、REMOTE_ADDRでIP除外しているものからは 思い通りにそのまま表示されるのですが、それ以外のものからは500エラーが出る状態と なっています。 希望は、特定IPのみhtmlでPHPを実行する通常アクセス。 特定IP以外は、メンテナンス画面という結果にしたいです。 なにか方法はありますでしょうか?

  • fsh17
  • お礼率96% (76/79)

みんなの回答

  • bunthit
  • ベストアンサー率0% (0/1)
回答No.2

おそらく/php.cgiも除外設定が必要になると思います。 RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REQUEST_URI} !=/php.cgi RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx RewriteRule ^.*$ - [R=503,L] こんな感じでいかがでしょうか。

回答No.1

こんにちは。 ちょっと質問の内容が???です・・・。 この場合、 1.リクエストされたURIが「/maintenance.html」”じゃない” かつ 2.リモートアドレスが「xxx.xxx.xxx.xxx」”じゃない” 場合は、 RewriteRule ^.*$ - [R=503,L] ですが、どのような問題提起なのでしょう・・・?

関連するQ&A

  • .htaccessの複数条件設定

    .htaccessで複数の条件を設定した場合の記述方法について教えてください。 現在123.45.67.890か098.76.543.21のどちらかのIPアドレスで http://www.example.com/aaa.htmlにアクセスがあった場合、 http://www.example.com/bbb.htmlへ転送するように設定しています。 記述は次の通りです。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.890 [OR] RewriteCond %{REMOTE_ADDR} ^098\.76\.543\.21 RewriteRule aaa.html http://www.example.com/bbb.html ここに、「他サイトhttp://www.hogehogeexample.comからのアクセス」という条件を加えた場合、 どのように記述すれば良いのでしょうか。 つまり、 「http://www.hogehogeexample.comからhttp://www.example.com/aaa.htmlへ飛んできた人のうち、 IPアドレスが123.45.67.890か098.76.543.21の場合のみ、 http://www.example.com/bbb.htmlへ転送する」という設定です。 ご存じの方がいらっしゃいましたら、 何卒宜しくお願い致します。

  • メンテナンス中表記について

    http://web-tan.forum.impressrd.jp/e/2009/06/16/5880 のページを参考にし 管理者以外はメンテナンス表示に飛ばしたく思っております。 しっかりバージョンで実際にアップしてみたのですが500エラーになってしまいます。 ※mainte.htmlもアップしております。 サーバーはxbitを使用しており.htaccessは使用可能です。xbitのマニュアルを見たのですが 解決に至れずにおります。メンテナンスをしたくなんとか実現させたいのですがどうすればいいものでしょうか? 中身は以下の通りです。 ErrorDocument 503 /mainte.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/mainte.html RewriteCond %{REMOTE_ADDR} !=自分のIP RewriteRule ^.*$ - [R=503,L] </IfModule>

  • htaccessで、特定IP以外をリダイレクトさせたい。

    初心者です。 .htaccessを使ってメンテナンス画面を表示させようと思っています。 条件として、 ・特定のファイルへのアクセスを、リダイレクトさせる。 ・動作確認を行うため、自分のIPの場合はリダイレクトさせない。 ファイルに対してのリダイレクトは、 Redirect /aaa/aaa.php /maintenance/maintenance.html 特定IPに対して、ディレクトリ単位のリダイレクトは、 order deny,allow deny from all allow from xxx.xxx.xxx.xxx ErrorDocument 403 /maintenance/maintenance.html というところまでは解決したのですが、 「特定IPに対して、ファイル単位のリダイレクト」 は、どのように指定すればよいのでしょうか?

    • ベストアンサー
    • HTML
  • htaccessの書き方について お教えくださいませんか?

    新たにwordpress にてホームページを作成しようと思うのですが、そこでお教えいただきたいのが、 htaccessの書き方 をどうすればいいかお教えくださいませんか? 今まで、レンタルサーバーを借りて ホームページ運用をしていました。 その際、仮に http://www.aaaa.com/ がメインのページとして、 携帯用のサイトを http://www.aaaa.com/i/としていました。 そして、 htaccess を設置して、携帯から http://www.aaaa.com/ にアクセスがあった場合 http://www.aaaa.com/i/ に誘導するようにしておりました。 (今回携帯サイトは、ワードプレスで運用はしません。サーバーにiフォルダーを作成しhtmlを保存するだけです) (1)そのhtaccessの記述が 以下です。 RewriteEngine On # DoCoMo RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC] RewriteRule ^$ http://aaaa.com/i/index.html [R] # SoftBank RewriteCond %{HTTP_USER_AGENT} J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} SoftBank [NC] RewriteRule ^$ http://aaaa.com/i/index.html [R] # au RewriteCond %{HTTP_USER_AGENT} UP.Browser [NC] RewriteRule ^$ http://aaaa.com/i/index.html [R] (2)また、ワードプレスにも最初から以下のhtaccessの記述があります。 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress ★この (1)と(2)を同じ場所に設置する場合、htaccessの記述を 足して書く必要が、あると思いますが、初心者でもあり どう書いていいのか わかりません。 どのように、記述すればよいのでしょうか? お知恵を拝借いただけたら 光栄です。

    • ベストアンサー
    • CGI
  • .htaccessのRewriteRuleエラー

    PHPのフレームワークを使って、サイトを作成しているのですが、 .htaccessの設定でつまずいております。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php 上記のコードはフレームワークを使う時の お決まりのようなコードなのだと思うのですが、 これはコピペして問題無く動作しております。 ※このコードは下記ページのものをコピペしました。 http://www.yiiframework.com/doc/guide/1.1/ja/topics.url#sec-7 しかし、この既存の.htaccessファイルに下記の通り、 www無しのアクセスをwww有りのurlに転送させるための コードを追加すると、サイト内のリンクが切れてしまいます。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{HTTP_HOST} ^mydomain.com //これを追加した RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L] //これを追加した RewriteRule . index.php 記述方法が誤っているのだと思うのですが、どのように記述すれば、 正常に動くのでしょうか?

    • ベストアンサー
    • PHP
  • cgi環境変数の変更方法?

    cgi環境変数の変更方法? perlで書かれたcgiプログラムがあります。 そのcgiではcgi環境変数内のREMOTE_ADDRを読出し、特定のIPアドレス【特定の端末】であれば特別処理を行っております。 今回、別の端末【別のIPアドレス】から同じ特別処理をする必要が生じました。 サーバ側のcgiプログラムを修正すれば簡単なのですが、著作権上の問題があって出来ません。 そこで端末側のプログラムがC#のWebClientクラスを使用してサーバと交信しているのを幸いとして myClient.Headers.Set("REMOTE_ADDR", "xxx,xxx,xxx,xxx"); ← 従前のIPアドレスへの変更 のステートメントを追加して強制的にIPアドレスを変更しようとしました。 ところがサーバ側のcgi環境変数には、HTTP_REMOTE_ADDRという新しい要素が加わっただけであり、目的とするREMOTE_ADDRを修正出来ません。 調べてみると、apacheがHTTP_タグを追加しているとのことです。 この追加をやめさせREMOTE_ADDRに当方が望むIPアドレスを設定することは可能でしょうか?

  • .htaccess でのリダイレクト

    レンタルサーバーを利用していて、ドメインを追加したのですが、制限がありました。 1、新しいドメイン追加の際、メインのドメインに新しいドメインに紐づいたサブドメインが必須 →xxx.comがメインの場合、yyy.comを追加するとyyy.xxx.comが自動的に追加される 2、サブドメインのディレクトリはメインドメインのディレクトリ内にしか作れない →xxx.com/yyy/、yyy.xxx.com、yyy.comと三通りのアクセス手段がある状態 yyy.comからだけアクセスできるようにしたいのですが、.htaccessの設定がどうも上手くいきません。アドバイスいただけませんでしょうか? 下の記述で、サブドメインからのアクセスは回避できました。 RewriteCond %{HTTP_HOST} ^yyy.xxx.com$ [OR] RewriteCond %{HTTP_HOST} ^www.yyy.xxx.com$ RewriteRule ^.*$ "http\:\/\/www\.xxx\.com\/" [R=301,L] 下の記述を追加で、サブディレクトリへのアクセスを回避しようと試みたのですが、yyy.comからアクセスしてもxxx.comへリダイレクトするようになってしまいます。 RedirectMatch permanent ^/yyy$/ / よろしくお願いいたします。

  • .htaccessについて

    ドコモの携帯電話からアクセスしてきた際に URLに?guid=ONを自動的に付与させたいんですが .htaccessに以下のように記述しても付与できていません。 どうしたらいいのでしょうか? RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* RewriteCond %{QUERY_STRING} !guid=ON RewriteCond %{QUERY_STRING} ^(.+)$ RewriteRule ^(.*)$ $1?%1&guid=ON [R=302,L] またディレクトリの下にあるperlで記述されたcgiやPHPにも .htaccessで一気に付与することは可能なのでしょうか? 初心者なので??と思うことを書いているかもしれませんが その点はどうかご容赦ください。

  • .htaccessにmod_rewriteを設定して静的なURLにしたい

    .htaccessにmod_rewriteを設定して、動的なページのURLを静的なURLにしたいのですが、うまくいきません。 http://localhost/test/hoge.php/aiueo というURLで http://localhost/test/hoge.php?key=aiueo になるようにしたいのです。 検索して試しに以下のように記述したのですが、ダメでした。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/test/hoge.php/(.+) /test/hoge.php?key=$1 [L] </IfModule> また「aiueo」の部分にスラッシュを含む場合もあるのですが、その際にも対応できるようにしたいです。 ご回答の程、よろしくお願いします。

    • ベストアンサー
    • PHP
  • htaccess で特定IP以外をリダイレクト

    特定IPの以外のアクセスは指定URLへリダイレクトさせたいのですが、うまく行きません。 ↓のように.htaccessに記述しているのですが間違っているんでしょうか? ------------------------------------------- order allow,deny allow from XXX.XXX.XXX.XXX deny from all ErrorDocument 403 http://yahoo.co.jp ------------------------------------------- 「XXX.XXX.XXX.XXX」のIPは自分のIPを記述しているので、yahooにリダイレクトされないのが正しい動作なのですがyahooへリダイレクトされてしまいます。 お詳しい方がおられましたらご回答宜しくお願い致します。

専門家に質問してみよう