あるWebサイトのルートディレクトリに設置してあるhtaccessに以下の記述を追加致しました。
RewriteEngine On RewriteCond %{REQUEST_URI} ^/$ [OR] RewriteCond %{REQUEST_URI} ^/index.html RewriteCond %{HTTP_COOKIE} !viewmode=pc RewriteCond %{HTTP_USER_AGENT} "iPhone|iPod|Android" [NC] RewriteCond %{HTTP_USER_AGENT} !iPad [NC] RewriteRule ^(.*)$ /sp/$1 [QSA,PT,L,NS
↑この部分を追加
上記の記述を追加すると今まで動いていたCGIプログラムが動かず「403エラーForbidden」となります。
ログには下記のように出力されております。
【AH00670: Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also forbidden due to its similar ability to circumvent directory restrictions : /var/www/XXXX/home-ssl/public_html/cgi-bin/hoge/input_check_inquire.cgi, referer: https://XXXX/hoge/inquire/】
エラーの内容を調べたところ、「Options FollowSymLinks」の記載が必要との事がわかったので、/cgi-bin/hoge/配下にhtaccessを設置し「Options FollowSymLinks」の記載をしましたが、効いていないのようで上記と同じエラーとなります。ルートディレクトリに設置してあるhtaccessに追加した部分をコメントアウトするとCGIプログラムが正常に動きます。
Apacheの設定ファイルは権限の関係上現在は見ることが出来ない状態なのですが、推測するにはおそらくcgi-binのディレクトリでhtaccessが効かない設定になっているのでは?と思います。
そこでルートディレクトリのhtaccessに「Options FollowSymLinks」の記載をしました。
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/$ [OR] RewriteCond %{REQUEST_URI} ^/index.html RewriteCond %{HTTP_COOKIE} !viewmode=pc RewriteCond %{HTTP_USER_AGENT} "iPhone|iPod|Android" [NC] RewriteCond %{HTTP_USER_AGENT} !iPad [NC] RewriteRule ^(.*)$ /sp/$1 [QSA,PT,L,NS
このように記載をしましたが、変わらずエラーとなります。
ここで分からないことは
1.ルートディレクトリの「RewriteEngine On」以下の記載をコメントアウトすると/cgi-bin/配下のCGIが正常に動く
2.「RewriteEngine On」以下の記載を有効にすると上記のエラーが出る。
→という事は「RewriteEngine On」以下の記載が/cgi-bin/配下にも作用している事になるが、「Options +FollowSymLinks」は作用しないという点です。これはどういう事なのでしょうか。そもそも上記のエラーの対策が「Options +FollowSymLinks」では不十分なのでしょうか。
回答2件
あなたの回答
tips
プレビュー