Web 制作 (SEO, SEM, CSS, Web デザイン等) に関する話題を扱うフォーラムです。
新規ユーザー登録 | パスワードを忘れた
リンク : フォーラム | Su-Jine | ブログ | HTML PING WORLD | ポイ探 | 広告について
★東京オフ会予定 3/1 (土)
★大阪オフ会予定 2/23 (土)
オフ会FAQ
Apache 等のインストールや設定方法等の話題を扱います。
トピック : Apache - htaccessについて
次の古いレス20件 << 最新のレス20件 >> 次の新しいレス20件
- No.6 - 2005年12月31日 00:03
tank (34ポイント)
-
私の場合は、次のようにしています。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.test\.com
RewriteRule (.*) http://test.com/$1 [R=301,L]
RewriteCondの ()が無い、:80が無い、
RewriteRuleの ^が無い、のが違いです。
記憶があいまいなのですが、文字コードEUC-JP、改行コードLF、は必須でしたでしょうか・・・。
- No.7 - 2005年12月31日 12:11
金川誠司 (20ポイント)
-
私もちゃんと勉強していないのですが、
確か.htaccessはShift_JISでないといけなかったように思うのですが、いかがですか?
- No.8 - 2006年01月01日 00:05
tank (34ポイント)
-
あっすみません。自分のファイルを確認したところ、SHIFT-JIS+LFでした。LFに関しては、必須かどうか忘れましたが、「LFにするように」というのを説明ページで見た記憶があります。
- No.9 - 2006年01月01日 21:55
金川誠司 (20ポイント)
-
(80)は分からないのですが、
^は文字列のはじめと言う意味ですよね?
どなたか詳しい方、ご教授お願いできますでしょうか?
- No.10 - 2006年01月04日 20:59
samurai (10ポイント)
-
すみません。レス有難うございます。勝手に自己解決しました。
DirectoryIndex index.html
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.test\.test\.test)(:80)?
RewriteRule ^(.*) http:///$1 [R=301,L]
で、なにも書かなければOKでした。
- No.11 - 2006年03月16日 20:51
pokosuka (10ポイント)
-
私共サイトhttp://www.○○○.com/ の一部にSSLを使用しているページがあり
https://ss1.xrea.com/www.○○○.com/ を使用しています。
SSLを使用しているページはメールフォームなどの顧客情報を入力する必要があるときに使用しています。
ところが、Googleではhttps://ss1.xrea.com/www.○○○.com/
のページの方をインデックスしてしまっており。
http://www.○○○.com/
の方がインデックスされない状態となってしまっています。
そこでご質問なのですが、特定のディレクトリ以外のhttpsのアクセスはすべてhttpへリダイレクト?
したいのですが、どのように設定をすればよろしいのでしょうか?
下記内容を記載した.httaccessを置いた場合は、
RewriteEngine on
RewriteRule ^/(.*)$ http://www.○○○/$1 [R=301,R]
https://ss1.xrea.com/www.○○○.com/ からhttp://www.○○○.com/
にリダイレクト?するのですが、その後http://www.○○○.com/ 内を無限ループしてしまいます。
ご教授頂けすと幸いです。お願い申し上げます。
- No.12 - 2006年03月16日 21:51
terra-natal (48ポイント)
-
この二つのアドレスは別々のサーバーに乗っかってるのでしょうか、それとも同じ実体を2つのURLで呼び分けているのでしょうか。
また.httaccessをどこに置いているんでしょうか。これらによって答えが変わりそうです。
- No.13 - 2006年03月16日 21:58
pokosuka (10ポイント)
-
terra-natal 様 ありがとうございます。
この2つのアドレスは同じ実態を2つのURLで呼び出しています。
http://www.○○○.com/のアドレスが通常で
SSLを使用するときだけ頭にhttps://ss1.xrea.com/が付いて
https://ss1.xrea.com/www.○○○.com/
となります。
.htaccessの置き場所については一つのフォルダ以外は全てhttpで表示したいので、各フォルダに置こうと思っています。
どうか、よろしくおねがいします。
- No.14 - 2006年03月16日 23:01
terra-natal (48ポイント)
-
http://www.○○○.com/hoge
と
https://ss1.xrea.com/www.○○○.com/
が同じ実体を表してるとすると、「 https://ss1.xrea.com/ 」のディレクトリー(DocumentRoot)に http://www.○○○.com/ のディレクトリー(DocumentRoot)へのショートカット(Symbolic link)が置かれているようです。
確かに、この状態で「RewriteRule ^/(.*)$ http://www.○○○/$1 [R=301,R]と書いては無限ループに陥りそうです。
これを回避するには「『 https://ss1.xrea.com/www.○○○.com/ 』でアクセスしてきたらリダイレクトするけど『 http://www.○○○.com/ 』でアクセスしてきた時はリダイレクトしない。」という設定が必要になりますが、.htaccessでは無理だったような気がします。
そうなるとページにJavaScriptを埋め込むか、cgiやphpでページを作るなどして「自分がどういうURLで呼ばれたか」を取得し、リダイレクトをかける必要がありますがいかがでしょう。
参考
http://fula.jp/blog/index.php?no=r699
http://q.hatena.ne.jp/1115614347
- No.15 - 2006年03月17日 01:16
pokosuka (10ポイント)
-
terra-natal 様 どうもありがとうございます。
色々と試してみました。
JavaScriptでは上手く動作しましたが、CGIやPHPの場合ではやはり自分の場所に戻って来てしまう為、無限ループになってしまいました。
もう少し色々と試してみたいと思います。
- No.16 - 2006年03月17日 10:20
terra-natal (48ポイント)
-
手元のサーバーでpokosukaさんの状況を再現してみました。
PHPの冒頭に以下をつければリダイレクトできましたよ。
(プロポーショナルフォントのためドットなどが見えにくくなってますのでご注意ください)
$url = $_SERVER["SERVER_NAME"]. $_SERVER["REQUEST_URI"];
if ( preg_match("/^ss1\.xrea\.com\/www\.○○○\.com/(.*)/",$url,$match) ) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.○○○.com/".$match[1]);
}
- No.17 - 2006年03月17日 12:34
pokosuka (10ポイント)
-
terra-natal 様 わざわざ試して頂いて本当に有難うございます。
設置してみたのですが、 $_SERVER["SERVER_NAME"]が返す値が
なぜだか、http://www.○○○.comとなってしまいます。
その為、リダイレクトができません。
仕方がないので$_SERVER["SERVER_ADDR"]で返す値
192.168.*
を使用して、リダイレクトをしようと試みているのですが、
if ( preg_match("/^ss1\.xrea\.com\/www\.○○○\.com/(.*)/",$url,$match) ) {
の部分の変更がどうしても分りません。
ご教授頂けると幸いです。
よろしくお願い申し上げます。
- No.18 - 2006年03月17日 18:37
terra-natal (48ポイント)
-
if ( preg_match("/^ss1\.xrea\.com\/www\.○○○\.com/(.*)/",$url,$match) ) {
/^ss1\.xrea\.com\/www\.○○○\.com/(.*)/
は正規表現で、
「$url に ss1.xrea.com/www.○○○.com/ が含まれていたら、 ss1.xrea.com/www.○○○.com/ 以降の部分を $match[1]に代入する」
という意味です。$urlの値に http:// まで入るなら、
/^http:\/\/ss1\.xrea\.com\/www\.○○○\.com/(.*)/
とすればよさそう。
/^というのは文頭からという意味なので、文頭がss1...で始まるという意味になります。
正規表現は慣れないと扱いにくいので、
if ( preg_match("/^ss1\.xrea\.com\/www\.○○○\.com/(.*)/",$url,$match) ) {
echo "マッチしたよ!値は".$match[1]."です。";
} else {
echo "マッチしなかったよ";
}
のような簡単なプログラムにして正規表現の部分を少しずついじってみてはいかがでしょう。
- No.19 - 2006年03月18日 10:36
pokosuka (10ポイント)
-
terra-natal 様
どうもありがとうございます。
何となく意味が分かってきました。
自分でもう少しがんばってみます。
- No.20 - 2006年03月27日 17:05
あきら (12ポイント)
-
サーバの設定に関してお聞きしたく書き込みさせて頂きます。
サーバの知識も無いのにWEBARENAのPROをレンタルしました。。
ここでの話題に上っているリダイレクトの件ですが、
httpd.confに、
<VirtualHost *:80>
ServerAdmin root@aaaa.net
DocumentRoot /var/www/website/www.aaaa.net
ServerName www.aaaa.net
ServerAlias aaaa.net *.aaaa.net
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(aaaa\.net)(:80)?
RewriteRule ^(.*) http://www.aaaa.net/$1 [R=301,L]
</VirtualHost>
と記述したところ、一応リダイレクトがかかるのですが、
http://www.aaaa.net//と最後にスラッシュが2こ入ってしまいます。。
多くのサイトを見ましたが、解決方法の記述が無かったためここにカキコさせていただきました。
解決方法がありましたら教えていただけると幸いです。
よろしくお願いします。
- No.22 - 2006年03月27日 18:09
terra-natal (48ポイント)
-
RewriteRule ^(.*) http://www.aaaa.net$1 [R=301,L]
でいかが?
- No.23 - 2006年03月27日 18:38
あきら (12ポイント)
-
terra-natal様
書き込みありがとうございます。
早速試したところ、問題なく動作し、助かりました。
ありがとうございました。
- No.25 - 2006年09月08日 23:52
ライラック (13ポイント)
-
.htaccessを配置するフォルダー以下のどのファイルにアクセスしても
その.htaccessを配置したフォルダーにあるindex.htmlに実行をリダイレクトするには当該の.htaccessにどの様に書いたら良いでしょうか?
宜しくお願い致します。
次の古いレス20件 << 最新のレス20件 >> 次の新しいレス20件
Copyright © 2009 Web 制作フォーラム by Su-Jine All rights reserved.