- 締切済み
.htaccessの反映
あるサイトを仮閉鎖したため.htaccessを使って別ページにリダイレクトを使おうとこの一行を追加しました Redirect permanent /home/httpd/vhosts/*domain*/subdomains/**/httpdocs http://***.****.***/ この.htaccessがある場所は /home/httpd/vhosts です。又、「/home/httpd/vhosts/*domain*/subdomains/**/httpdocs」をURLにしても無理で「http://***.****.***/」をパスにしても全く反映されませんでした この場合どうすればいいのでしょうか。よろしくお願いします。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- rentahero
- ベストアンサー率53% (182/342)
> AllowOverride None > こういう行を見つけたのですがここは関係ないでしょうか。 その外の<Directory>セクションがどうなっているかわからないとなんともいえません。 なので、 AllowOverrideの行とその外の<Directory>ディレクティブは一組としてみないとわかりません。 ちなみにAllowOverride Noneでは.httaccessはまったく動作しません。 というか、そのディレクトリ以下では、.htaccessの存在チェックすらしません。(その分動作が速くなります) またその下のディレクトリを指定した<Directory>セクションにAllowOverride ディレクティブがあればそこから動作が変わります。 /home/httpd/vhosts/**ドメイン名**/subdomain/**サブドメイン名**/httpdocs/ のどこかでシンボリックリンクになっていませんか? なっているはずです。 先ほど、#4の補足にて<Directory /var/...>系統の記述が有ったとのことですので、多分/var/以下につながっているはずです。 winscpでディレクトリツリーペインのツリーの途中に「フォルダへのショートカット(小さい矢印がついたフォルダ)」があるはずです。探してください。これがシンボリックリンクです。 そこをクリックするとディレクトリツリーペインがリンク先へ移動するはずです。 こうして、最終的にアドレス欄に「/var/」から始まるアドレスが表示されるはずです (エクスプローラタイプの表示で確認しました) いかがでしょうか。
- rentahero
- ベストアンサー率53% (182/342)
httpd.apache.org/doc-2.0を見直してみると > AllowOverrideは正規表現無しの<Directory>セクションでのみ有効 と有ります。したがって 先の私の想像はかなり正しいはずです。 <Directory /var/ がいくつかあるとのことでしたが、AllowOverrideを指定するために物理ディレクトリを指定しているはずです。
補足
# # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None こういう行を見つけたのですがここは関係ないでしょうか。
- rentahero
- ベストアンサー率53% (182/342)
/home/httpd以下のどこかで、シンボリックリンクになっていませんか? ご確認お願いします。 私の想像では/var/httpdかなにかにつながっているような気がすごくします。
- rentahero
- ベストアンサー率53% (182/342)
> <Directory /> > Options FollowSymLinks > AllowOverride None > </Directory> > はありましたが > <Directory /home/httpd> > 等はありませんでした。 > 他にも<Directory*>はいくつかありましたが > <Directory /var/*>系統でしたので関係ないかな? > っと思ったので書きませんでしたがこれでいいでしょうか。 はい。結構です。 では、 <DirectoryMatch /home/httpd/ を探してください。これは正規表現が利用できます。 <Directory>が無い以上、多分こちらはちゃんとあると思います。 で、参考URLを見ていただくとどれが今回のディレクトリに該当するのかわかると思います。 さて、該当するものがあれば(もしかしたらひとつで全部やってるかもしれません) AllowOverride ディレクティブにAll か FileInfo があることを確認してください。 もし無ければ設定がおかしいです。Redirectが動かないようになっている可能性があります。 AllowOverrideやOptionsは上位ディレクトリから順次上書きするように動作しますので、 上位ディレクトリで設定ができていてもその下のディレクトリで設定をオフにするようにされていては動作が変わります。 では、補足待っております。
補足
すいません <DirectoryMatch これも検索にヒットしませんでした。
- rentahero
- ベストアンサー率53% (182/342)
#4について修正です。 <Directory /home/httpd/vhosts でgrepして、vhostsまでしかないかどうか確認してください。 それ以下について指定があるようなら、そこの記述のAllowOverrideを確認してください。 /home/httpd/vhostsにおいては、AddTypeやErrorDocumentが記述されているようですので、FileInfoは有効になっているようです。 RedirectはFileInfoでOverrideできるようになります。
補足
先に<Directory /home これで検索をかけましたが これでで始まる行(文字列)が検索できませんでしたので <Directory /home/httpd/vhosts この文字列もないと思います。すいません。 補足ですが あまりSSHには詳しくないためWinSCPというソフトを使って.htaccessやhttpd.confファイルを編集しています 又、Apacheは2.0系です。
- rentahero
- ベストアンサー率53% (182/342)
補足ありがとうございます。 /home/httpd/vhosts/.htaccess の内容、見ましたが、それ自体問題なさそうです。 httpd.confに書いてもおかしくないような内容ばかりです。 > 何も変化はありませんでした。 > あと、.htaccessにはこのリダイレクト以外に > 何も記述しておらず、 なにも変化がない、ということは、つまり404になったということでよろしいですね? では、httpd.confの中に <Directory /home/httpd/vhosts> か、もし無ければ、 <Directory /home/httpd> を探してください。 このタグ(Directory)内の AllowOverride がどうなっているか 教えてください。
補足
<Directory /> Options FollowSymLinks AllowOverride None </Directory> はありましたが <Directory /home/httpd> 等はありませんでした。他にも<Directory*>はいくつかありましたが<Directory /var/*>系統でしたので関係ないかな?っと思ったので書きませんでしたがこれでいいでしょうか。
- rentahero
- ベストアンサー率53% (182/342)
最初からいきます。 まず、その閉鎖したサイトで、 http://****.*****.com/index.html でアクセスできるのは /home/httpd/vhosts/**ドメイン名**/subdomain/**サブドメイン名**/httpdocs/index.html なんですね? もしこの時点で違うのであれば、補足に 「最初から違います」と書いてください。 この時点で正しいのでしたら、根本的に勘違いしてるように見受けられるので、これまでの設定はすべて忘れてください。(できればRedirectする設定をいったんすべてコメントにしてください) その上で /home/httpd/vhosts/**ドメイン名**/subdomain/**サブドメイン名**/httpdocs/.htaccess (index.htmlと同じ階層にある.htaccess)の中に Redirect gone /not-index.html と書いてください。 index.htmlの代わりにnot-index.htmlをアクセスしたら 410 Goneというエラーが出ましたか? コレについて補足をください。
補足
何も変化はありませんでした。 あと、.htaccessにはこのリダイレクト以外に何も記述しておらず、 /home/httpd/vhosts/ ここに全ての設定を統一するための.htaccessを設置しています ===内容=== Options FollowSymLinks ExecCGI Includes AddType application/x-httpd-cgi .cgi AddType application/x-httpd-php .php Options +Includes AddType text/html shtm AddHandler server-parsed shtm DirectoryIndex index.html index.php index.htm default.htm index.cgi ErrorDocument 404 http://**********/error404.htm <Files ~ "\.(gif|jpe?g|png|bmp|mid|css|exe|swf)$"> #リンク許可リファラーリスト SetEnvIf REFERER "*********" ref_ok ~多いため略~ #直リンク許可ホストリスト SetEnvIf HOST "********" ref_ok ~多いため略~ SetEnvIf REFERER "^$" ref_ok order deny,allow deny from all allow from env=ref_ok </Files> ===-ここまで としていますがこれも関係ないでしょうか。これより上の階層には.htaccessはありません。
- rentahero
- ベストアンサー率53% (182/342)
> Redirect /home/httpd/vhosts/****/subdomains/***/httpdocs http://************/ …えっと。permanentだろうが tempだろうがまあそれは良いんですよ。リダイレクト元の指定が間違ってるんじゃないの?ということなんですよ。 もとのアドレスが「http://www.example.com/aaa/bbb/」だったら、ホスト名・ドメイン名をはずして「/aaa/bbb/」にします。 これがリダイレクト元。 元の「http://www.example.com/aaa/bbb/index.html」が「http://www.aaa.com/bbb/index.html」にリダイレクトされるなら、「/aaa/bbb/」がリダイレクト元だから、「http://www.aaa.com/bbb/」が一致する部分。 したがって、転送先は「http://www.aaa.com/bbb/」になるわけです。 結果として、 Redirect permanent /aaa/bbb/ http://www.aaa.com/bbb/ Redirect temp /aaa/bbb/ http://www.aaa.com/bbb/ となるはずです。 えっと、いっぺん Redirect gone /never-found-file.html って書いてみてください。 http://xxxx.com/never-found-file.html とアクセスしたら410 Goneなエラーが出ますか?
補足
すいません。何も変化がありませんでした。 一応、.htaccessの位置関係を書いておきます /home/httpd/vhosts/**ドメイン名**/subdomain/**サブドメイン名**/httpdocs/**ここにindex.htm等があり、.htaccessは /home/httpd/vhosts/**ドメイン名**/subdomain/**サブドメイン名**/httpdocs/.htaccess だったり /home/httpd/vhosts/**ドメイン名**/subdomain/**サブドメイン名**/.htaccess と、上の階層においています あと、.htaccessが無効なのかと思い、わざと構文エラーにしておいてみると、500が返ってくるので無効では無いようです。
- rentahero
- ベストアンサー率53% (182/342)
Redirect文の構文間違ってます Redirect [status] URL-path URL したがって、 http://www.example.com/aaa/bbb/ を http://aaa.example.com/bbb/ にリダイレクトする場合 Redirect /aaa/bbb/ http://aaa.example.com/bbb/ となります。
補足
回答ありがとうございます。ですが、 Redirect /home/httpd/vhosts/****/subdomains/***/httpdocs http://************/ も質問前に一度試していたのですが、これでも反映されず、この回答のあともう一度試しましたがそれでもなりませんでした。
補足
返信が申し訳ありません。 ややこしくなってきたためしばらく自分で試してみます、 ありがとうございました。