設定はできないものでしょうか?
( レンタルサーバで直接Apacheの変更はできないようです )
知り合いが勤める会社の、とても悲惨な開発環境を
なんとか解決してあげたいのです。
約500ページあるサイトを作ったそうなのですが、
まずページ毎に相対パスがバラバラ
( ../img/jpg や /aaa/img/jpg)だそうです。
さらにテストサーバは、1つのドメインに
サブフォルダをつくって確認しているそうです。
http://xxxx.com/abc/
これでは、ルートパスが http://xxxx.com/ なため、
全ページをテストサーバ用に、パスの前に /abc/ を
手動で付け足しているようなのです。恐ろしいことに。。
せめてその作業だけでもなんとかできれば、
かなりの貢献になると思います。
何か他に解決できそうなアイデアがあれば
是非教えてください。よろしくお願いします。
ありがとうございます。
お言葉に甘えて回答欄に記載させていただきます。
1.次の「.htaccess」をルートディレクトリに設置する。
RewriteEngine On RewriteBase / RewriteRule ^/?img/(gif|jpg|png)/([A-z0-9_-]+\.(?:gif|jpeg|jpg|png))$ /abc/img/$1/$2 [L] RewriteRule ^/?(css|js)/([A-z0-9_-]+\.(?:css|js))$ /abc/$1/$2 [L] RewriteRule ^/?((?:[A-z0-9/_-]+)(?:\.(?:html|htm)?))$ /abc/$1 [L]
※「.htaccess」の記述はコメントと同じです。
2.パスの前に 手動で足した「/abc」を削除する。
(※「./~」や「../~」、「/img/~」等のパスはそのままにします。
>まずページ毎に相対パスがバラバラ
( ../img/jpg や /aaa/img/jpg)だそうです。
上記の「/aaa/img/jpg」が不明なのですが、ルート直下の他のサブフォルダの画像を呼び出している場合は、画像をルート直下のサブフォルダabc内の画像フォルダに移動して、パスを「/img/jpg/~」等、ルートからの正しい相対パスに変更してください。
3.最後に、パスの前に 手動で足した「/abc」を削除します。
後は、今後の対策としてテスト用レンタルサーバの乗り換えを提案してみてはいかがでしょうか?
現在お使いのサーバーがマルチドメインに対応している場合は乗り換える必要はありませんが、もし対応していない場合は、さくらのレンタルサーバーがおすすめです。
PHPが動作しなくてもいいのでしたら、ライトプランでも十分だと思います。
http://www.sakura.ne.jp/function/matrix.html
さくらの初期ドメインを含めて、合計20個まで設定できます。
http://faq.sakura.ad.jp/faq/1032/app/servlet/qadoc?000416
独自ドメインの追加方法
※他社で取得した場合は、他社で取得した独自ドメインを利用するを参考にしてください。
ドメインの追加が済んだら、マルチドメインの設定をします。
※HP作成の契約締結の時点でサブドメインを追加して、サブフォルダにマルチドメインを割り当てておくと、時間をロスせずスムーズにいくと思います。
もちろん、今後は相対パスをルートからの相対パスに統一する必要はありますが、マルチドメインで運用した場合は、上記のような「.htaccess」を設置する必要がなくなります。
テスト用サーバーという事ですので、「.htaccess」で対処しても問題ありませんが、マルチドメインでテストするのも一つの方法だと思います。
※ただし、「.htaccess」で対処する場合、このケースでは対応できるのは一つのサイト(サブフォルダ)だけです。
サイトごとに「xximg」「yyimg」「xxcss」「yycss」等と、画像やCSSのフォルダ名を別にする場合は、2つ以上のサイトに対処可能ですが、HTMLのフォルダまで分けるのは困難だと思います・・・
>問題は相対パスの書き方がバラバラに書かれていて、
>置換できないからだそうです。
きちんとパターンわけしてルールを決めれば98%は出来ると思います。
残りの2%は、テストフェースで検出するしかないと思います。
Redirectをつかうとしても現状のあやふやさをみると、失敗すると思います。
最終的には、実際の運用環境でテストするんですよね?
テストしないとかですか?
ありがとうございます。
確かに正規表現を使うなどして数パターンにわければ
ほとんど置換できるとは思います。
が、僕がそこまで踏み込みたくはありません。
htaccessやApacheの設定について僕は詳しくないので、
知り合いがわかる範囲で、こうすれば簡単にできるらしい、
と教えてあげられればという感じでした。
テスト環境については、テスト環境自体が通じないレベルです。
システムはまったく使っていなくて、ローカル上でHTMLを
ブラウザにドロップしてチェックしているような環境だそうです。
ありがとうございます。
お言葉に甘えて回答欄に記載させていただきます。
1.次の「.htaccess」をルートディレクトリに設置する。
RewriteEngine On RewriteBase / RewriteRule ^/?img/(gif|jpg|png)/([A-z0-9_-]+\.(?:gif|jpeg|jpg|png))$ /abc/img/$1/$2 [L] RewriteRule ^/?(css|js)/([A-z0-9_-]+\.(?:css|js))$ /abc/$1/$2 [L] RewriteRule ^/?((?:[A-z0-9/_-]+)(?:\.(?:html|htm)?))$ /abc/$1 [L]
※「.htaccess」の記述はコメントと同じです。
2.パスの前に 手動で足した「/abc」を削除する。
(※「./~」や「../~」、「/img/~」等のパスはそのままにします。
>まずページ毎に相対パスがバラバラ
( ../img/jpg や /aaa/img/jpg)だそうです。
上記の「/aaa/img/jpg」が不明なのですが、ルート直下の他のサブフォルダの画像を呼び出している場合は、画像をルート直下のサブフォルダabc内の画像フォルダに移動して、パスを「/img/jpg/~」等、ルートからの正しい相対パスに変更してください。
3.最後に、パスの前に 手動で足した「/abc」を削除します。
後は、今後の対策としてテスト用レンタルサーバの乗り換えを提案してみてはいかがでしょうか?
現在お使いのサーバーがマルチドメインに対応している場合は乗り換える必要はありませんが、もし対応していない場合は、さくらのレンタルサーバーがおすすめです。
PHPが動作しなくてもいいのでしたら、ライトプランでも十分だと思います。
http://www.sakura.ne.jp/function/matrix.html
さくらの初期ドメインを含めて、合計20個まで設定できます。
http://faq.sakura.ad.jp/faq/1032/app/servlet/qadoc?000416
独自ドメインの追加方法
※他社で取得した場合は、他社で取得した独自ドメインを利用するを参考にしてください。
ドメインの追加が済んだら、マルチドメインの設定をします。
※HP作成の契約締結の時点でサブドメインを追加して、サブフォルダにマルチドメインを割り当てておくと、時間をロスせずスムーズにいくと思います。
もちろん、今後は相対パスをルートからの相対パスに統一する必要はありますが、マルチドメインで運用した場合は、上記のような「.htaccess」を設置する必要がなくなります。
テスト用サーバーという事ですので、「.htaccess」で対処しても問題ありませんが、マルチドメインでテストするのも一つの方法だと思います。
※ただし、「.htaccess」で対処する場合、このケースでは対応できるのは一つのサイト(サブフォルダ)だけです。
サイトごとに「xximg」「yyimg」「xxcss」「yycss」等と、画像やCSSのフォルダ名を別にする場合は、2つ以上のサイトに対処可能ですが、HTMLのフォルダまで分けるのは困難だと思います・・・
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | azuki1975 | 181回 | 159回 | 1回 | 2009-11-20 00:05:20 |
ありがとうございます。