- 締切済み
ユーザ毎にドキュメントルート変更できますか
今まで趣味で立ち上げてきたWebサーバを引退させ、コンテンツをレンタルサーバに移しました。 これまで http://引退サーバ/コンテンツ だったURLは http://レンタルサーバ/~アカウント名/コンテンツ になりました。 元々、 コンテンツ内の全ページは「ドキュメントルート/style/my.css」を使用していたり、 複数のページが共通の「ドキュメントルート/img/*.gif」を埋め込まれている のですが、これらを絶対パス指定してしまっていて、 引越し先では相対的にドキュメントルートが変わってしまったため、 cssや画像が読み込まれずに表示されてしまっている状態で困っています。 全ページのHTMLに書かれているパス指定を書き換えればよいのかも知れませんが、 ページ数が多過ぎて非現実的です。 htaccessに何か書くことで下位ディレクトリのドキュメントルートを ユーザのホームディレクトリに変換できないかと あちこち調べてみたのですが分かっておりません。 何かアドバイスを頂ければ幸いです。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- sak1004
- ベストアンサー率0% (0/0)
私は下記の.htaccessをルートに於いて ルート変更 をトライ中です。 RewriteEngine on RewriteCond %{REQUEST_URI} !^/aaa/bbb/ccc/.*$ RewriteRule ^(.*)$ /aaa/bbb/ccc/$1
- ORUKA1951
- ベストアンサー率45% (5062/11036)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
書き換えたほうが良いというもう一点は・・ なんといってもファイルのパッティングが生じない と言うことです。 もし古いファイルの中での参照やリンク先が/images/logo.gifだったら、新しいページには、/[user name]/images/logo.gifが置けないですよね。 古いページが何千ページあろうと、引っ越した場合新しいサイトで一切ページを製作しない限りは、パスは書き換えましょう。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
ファイルをすべて/oldなどに引っ越して、/oldの.htaccessに、 alias / /old で良いと思うが、それを許可しているサーバーはないでしょう。デフォルトでは禁止されている。 まさに、私が今、数百ページに対してその作業をしていたのですが、テキストエディタの「フォルダーから置換」で、絶対パス、相対パスが混在していましたが、数回の処理で済ませました。ものの数分で済む作業です。 絶対パスでの記述は、ファイルをどこに移動しても良い、テンプレート一つ作っておくと作業が簡単と言う利点もある一方で、他から参照されるファイルを移動するときには、今回のような引越し以外でも、必ずこの作業が必要になります。 以前は、perlを使って作業していたのですが、今はテキストエディタに頼ることが多いです。ちなみに私は、EmEditor( http://jp.emeditor.com/ )です。(EmEditor Free ( http://jp.emeditor.com/modules/download2/rewrite/tc_5.html )にはファイルから置換の機能はありません) (src|href)="?\/([^"\s])"? ↓ \1="/old/\2" とか・・・。 大規模なサイトを運営していると、Perlや高機能なテキストエディタは必須のツールです。この機会にそれらの導入を考えたほうが早いでしょう。EmEditorの試用版( http://jp.emeditor.com/modules/download2/ ) 余談ですが、絶対パスで記述しているファイルのプレビューがファイルをブラウザで開いただけではできないという問題は、firefox+Server Switcher( https://addons.mozilla.jp/firefox/details/2409 )で、ローカルのテストサーバーと切り替えることで簡単にできます。
お礼
ご回答有難うございます。 テキストエディタで下位フォルダ中のファイルを一括置換してくれるものがあるのですね。 使用検討してみます。 置換例も示して下さいまして有難うございます。しかしながら、御示しの例では 置換後も絶対パスが使われてるようですがこれではまずいってことですよね。 /aaa.html内の記述 「href="/style/my.css"」は「href="./style/my.css"」に、 /Folder/aaa.html内の記述 「href="/style/my.css"」は「href="../style/my.css"」に直さなければならないのですよね。 当方、旧サイトであろうことか何階層も掘って作ってしまってまして、 これを一括でできればいいのですが....
- dscripty
- ベストアンサー率51% (166/325)
[ANo.2] の回答を撤回して、[ANo.3] さんの回答に乗っかることにする! いま、知っておいたほうがいいのは、小手先のテクニックで回避する方法じゃなくて、テキストエディタなり、スクリプト書くなりして、今回のような「複数のファイルのなかの文字列を一気に置き換える」ことができるようになることだからね。
お礼
ご回答有難うございます。 特に、ご回答を放置されずに他の回答者を踏まえてあらためてご回答くださいまして誠にありがとうございました。 スクリプトをどう書くか練り始めようと思います。
- naokita
- ベストアンサー率57% (1008/1745)
>ページ数が多過ぎて非現実的です。 旧絶対パスを残す方が非現実的であって、パスを変更するのが妥当です。 何百ページあろうが、置換え機能があるテキストエディタの 置換えで一括変換して下さい。 (Dreamweaverならサイト内置換機能で、数十秒で完了出来るでしょう) 旧絶対パス → 相対パス に変更
お礼
ご回答有難うございます。 ここまで断言されたことで小手先で逃げることを諦める踏ん切りがつきました。 「Dreamweaverなら数十秒」で心揺れましたが、結構な価格のようですので、 まずは自力で頑張ってみようと思います。 あらためて有難うございました。
- dscripty
- ベストアンサー率51% (166/325)
レンタルサーバでしたの機能をサポートしていればできるよ。 1) .htaccess で mod_rewrite がつかえる 2) perl か php がつかえる 1) の mod_rewrite だけどこれは 「~アカウント名/コンテンツ」以下の html ファイルへリクエストが来たときにそのリクエストを perl や php に転送させるためのもの設定ね 2) は 1) で転送されてきたリクエスト対象の html を DOM によみこんで、リンク先が「ドキュメントルート」になってちゃってる属性を全部かきかえてから DOM を出力してあげるだけのプログラム。 perl のプログラムで参考になりそうなページをみつけたから紹介しておくね。 http://blog.livedoor.jp/dankogai/lite/archives/51179647.html php は google で php html dom を検索すればなにかみつかるかもね。 .htaccess の具体的な記述は親切な人がかいてくれるかも。 perl と php も誰かかいてくれないかとちょっと期待。。。 でも、おすすめは msxsl.exe(Windows) か xsltproc(Linux) でソースをかきかえてることかな? 正規表現がかけるなら、sed か perl でかきかえるほうがはやいかも。
- notnot
- ベストアンサー率47% (4900/10358)
無理です。 .htaccess に書けることで、HTMLの内部の解釈を変えることは出来ません。 href="/stlye/my.css" と書かれていると、あなたのディレクトリに置いた.htaccessは参照しないのでどうしようもありません。 ドキュメントルート/style/.htaccess に書ければ何とかなりますが無理ですよね。 従って、HTMLを全部書き直すか、独自ドメインを使えるサーバーに引っ越すしかないです。 HTMLの書き直しは、生でHTMLを書いたのならツールで一括変更出来るので簡単です。このあたりのツール http://www.vector.co.jp/vpack/pickup/win/util/text/index.html ホームページ作成ツールを使ったのなら、設定で何とかならないですかね。
お礼
早速のご回答有難うございました。 気楽にできるかも知れないとあれこれ探していた手間を省くことができました。
お礼
分かりやすく画像までお示しくださいまして誠に有難うございました。 まだ高機能エディタについてはよく理解できていないところもありますが、 まずは自分で手を動かしてみようと思います。 あらためて有難うございました。