• 締切済み

Apache2.0.54にてRewriteRule内に/が含まれるパスが認識されない

お世話になります。 TOCMAT5.0.3/Apache2.0.54 の環境にて 特定ページへのアクセスが来た際にsslにてアクセスを行いたく 以下のような設定を行いました。 .htaccessにて --------- RewriteEngine on RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^test/test.html$ https://%{SERVER_NAME}/secure.html [R,L] RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^test.html$ https://%{SERVER_NAME}/secure.html [R,L] --------- test.htmlでアクセスすると正常にリダイレクトが行われるのですが RewriteRule内に「/」が含まれているものはうまく動作しません。。 以下のようなパスに変更などして試しているのですがうまくいきません。 ^test\/test.html$ ^test//test.html$ ^test/*$ 他のサーバーにて、同様のRewriteRuleは正常に動作しますので、 mod_jk.conf httpd.conf の設定に不備があるように考えていますが検討が付きません。 ご教授よろしくお願い致します。

みんなの回答

回答No.2

サブディレクトリ /test/ にも、.htaccess を置かれていて、 そちらでも、rewrite を設定されているということはないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

「うまく動作しない」というのは、エラーメッセージかなにか表示されるのでしょうか? それとも、Rewriteがされずに、/test/test.html がそのまま表示されるということなのでしょうか。 ちょっと気になったのですが、 RwriteBase / ということは、ドキュメントルートに.htaccess を置かれているのでしょうか。 本家のドキュメントによると、 httpd.conf を編集できる権限があるのならば、.htaccess を使わずに、 設定を httpd.conf に書いた方がよい です。

参考URL:
http://httpd.apache.org/docs/2.0/ja/howto/htaccess.html
cos31
質問者

補足

回答ありがとうございます。 > それとも、Rewriteがされずに、/test/test.html がそのまま表示されるということなのでしょうか。 はい。リライトが行われず /test/test.htmlがそのまま表示されます。 httpレスポンスを見るとリダイレクト要求が記載されていないことを確認しています。 .htaccessに記載したのは、httpd.confを編集できる権限がないからです。 動作としては.htaccessに記載してもhttpd.confにて記載しても変わらないという認識しています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • RewriteRule有効について(Apache設定)

    Apache2をWindows2kにインストールし運用しています。 RewriteRuleを行うが有効になりません。 httpd.confと.htaccessは、以下のように記述しています。 .htaccessは、レンタルサーバーに転送しテストすると正常に動作します。 と言うことは、ローカルサーバーの環境設定がまずいと言うことになるかと思うのですがどうしても分かりません。 ご教授の程、宜しくお願いします。 -----(httpd.conf)----- Options All AllowOverride All LoadModule rewrite_module modules/mod_rewrite.so -----(httpd.conf)----- -----(.htaccess)----- RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^info.html+ info.php RewriteRule ^k/index.html$ k/index.php RewriteRule ^k/([0-9A-Za-z]+)/$ k/index.php?id=$1 -----(.htaccess)-----

  • RewriteCondとRewriteRuleについて

    どのジャンルか迷いましたが、ここでお願いします。 ローカル環境で、トップにbbbディレクトリがあります。 bbbディレクトリの中は .htaccess index.html cccディレクトリ があり、 cccディレクトリの中は a.htmlがあります。 ¥┬index.html   └bbb┬index.html .htaccess      └ccc─a.html ここでhttp://localhost/bbb/a.htmlにアクセスすると cccディレクトリの中のa.htmlを参照するようにさせたいと思い、 .htaccessに RewriteEngine on RewriteCond $1 !^(b.html) RewriteRule ^(.*)$ ccc/$1 [L] や又は RewriteEngine on RewriteCond $1 ^(?!b.html)(.+) RewriteRule ^(.*)$ ccc/$1 [L] と書いたのですが Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. というエラーが出てしまいます・・・ RewriteEngine on RewriteCond $1 ^(a.html) RewriteRule ^(.*)$ ccc/$1 [L] と書けばちゃんと表示されるのですが、否定を用いた書き方(RewriteCond $1 !^(b.html)) だと、どこが間違っているのでしょうか?

    • ベストアンサー
    • Perl
  • プログラムのクエリーをRewriteRuleの正規表現で書き換え

    ページを検索エンジンに登録させるために URLのクエリー以下(?からうしろ)を.htaccessのRewriteで書き換えて「/」区切りでアクセスさせようと思っています。 http://***.domain.com/program.html?a=1&b=2&c=3 ↓ http://***.domain.com/program/a/1/b/2/c/3.html 大抵このような場合 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5&$6=$7&$8=$9&$10=$11 [L] RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5&$6=$7&$8=$9 [L] RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5&$6=$7 [L] RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5 [L] RewriteRule ^(.*)/(.*)/(.*)\.html$ $1.html?$2=$3 [L] のように追加していく書き方が簡単だと思うのですが、クエリーの数が多く正規表現の「()」で参照する変数が$10を超えてしまい上手く参照できません。 クエリーがいくら追加されても対応できる汎用性のある記述を作ろうと思っています。 何か良い方法があったら教えて下さい。

    • 締切済み
    • PHP
  • .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
  • HTTPSへの強制リダイレクトについて

    質問です。さくらレンタルサーバで.htaccessで RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] or RewriteCond %{HTTPS} on RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L] にしてもリダイレクトループが起きてしまい、強制的にhttpsにする事が出来ません。 例としてドメインを abc.jp として http://abc.jp/ (wwwはなし)で接続した時に httpsに移すという物ですが、さくらレンタルサーバでは、なぜかループしてしまいます。 どうすれば強制化出来るでしょうか。また.htaccess以外にも方法がありましたら お教え下さい。

  • .htaccessでRewriteRule

    .htaccessでパラメータ付のアドレスにRewriteRuleしたいのですが。 例えば test.phpにアクセスされた場合、test.php?id=5 としたいのですが。 現状、下記のように.htaccessに記述したのですがうまくいきません。 RewriteEngine On RewriteRule ^test.php$ /test.php?id=5 [R=301,L] また、test.phpにはパラメータ付(test.php?id=1)でアクセスされる場合もあります。 その場合には、test.php?id=1のままにしたいのですが。 どのように記述したらよろしいのでしょうか。

  • RewriteRuleについて教えてください

    RewriteEngine On RewriteBase / RewriteRule ^num([0-9]+)/$ number.html?inp=$1 [L] に設定したら、cssやイメージが適用されないです。 ご教授お願いします。

    • ベストアンサー
    • HTML
  • SSLのリダイレクトについて

    sslのリダイレクトの作業を急いでやらないといけないのですが、sslに関しては全くの初心者なので調べながらいろいろやってみましたがどうしてもうまくいかず困っています。。 Wordpressでサイトを作成していてドメイン直下の.htaccessにリダイレクトの記述をしています。 サーバーはGMOのiCLUSTAで、sslはジオトラストです。 http://○○○.jp/ にアクセスした場合に、 https://ssl.○○○.jp/ へリダイレクトされるようにしたいです。 .htaccessの記述内容です # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress RewriteEngine on RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://ssl.○○○.jp/$1 [R=301,L] この記述をしていますが、リダイレクトされたりされなかったりの不安定な状態です。 されないことの方が多いのでどの条件で動いているのかがわかりません。 RewriteCond %{HTTPS} on を、 RewriteCond %{HTTPS} off にするとリダイレクトされますが、処理がループされていますという表示が出てしまいます。 どのような記述をすればうまくいくのでしょうか?

  • 301リダイレクトの例外処理

    WEBサイト全体に 拡張子がhtmとhtmlが混在していて管理がわずらわしいので、 .htaccessで下記のような設定をしました。 ドメイン直下に.htaccessを置いているので、サイト全体でこの設定が有効に なっているのですが、あるフォルダだけこれが適用されないように 設定をしたいと思います。 いろいろやってみたのですが、今ひとつ正常に動いてくれません。 どのようにすればいいのでしょうか。 -------------------------------------------------------------- Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^XXX.jp RewriteRule ^(.*)$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.htm RewriteRule ^(.*)index.htm$ http://www.XXX.jp/$1 [R=301,L] -------------------------------------------------------------- サーバーはApache/1.3.42 .htaccessファイルを置いているのは、ドメイン直下です。

  • htaccessのマッチが失敗します

    下記のように書いていますがうまく動作しません。 どのように手直しすればうまくいきますでしょうか??? hostname/abc_abc_ab_abc.html というテストを作ってみたのですが、本来であれば、abc3.cgiへ渡されるはずなのですが、全て、all.cgiへ渡されてしまいます。 お分かりになる方、宜しくお願い致します。 RewriteEngine on RewriteBase / ##リクエストURI中に、abcという文字列が3回以上ならabc3.cgiを動作させる RewriteCond %{Request_URI} "^(abc){3,}$" [NC] RewriteRule ^(.+)$ abc3.cgi?$1 [L] ##リクエストURI中に、abcという文字列が1から2回ならabc12.cgiを動作させる RewriteCond %{Request_URI} "^(abc){1,2}$" [NC] RewriteRule ^(.+)$ abc12.cgi?$1 [L] #どれにもマッチしない場合、all.cgiを動作させる。 RewriteRule ^(.+)$ all.cgi?$1 [L]

    • ベストアンサー
    • Perl