質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

6208閲覧

サイト全体の画像やCSSのパスを置換したい

umauman

総合スコア57

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2017/04/08 15:59

###実現したいこと
画像やCSSのパスを置換したいのですが、なかなかうまくいきません。

「置換前のパス」
www.example.com

・具体例
<img src="http://www.example.com/img/画像.jpg" alt="">

<link rel="stylesheet" href="http://www.example.com/css/スタイルシート.css">

「置換後のパス」

test.example.co.jp

・具体例
<img src="http://test.example.co.jp/img/画像.jpg" alt="">

<link rel="stylesheet" href="http://test.example.co.jp/css/スタイルシート.css">

###下記が利用できる環境です。

  • .htaccess
  • javascript(jQuery)
  • php ※WordPressにて作成

ネット上の情報などを調べて下記ソース等を試しているのですが、なかなか反映がされません。
特に.htaccessは「Internal Server Error」になってしまいます。

###jQuery

javascript

1$('body').each(function(){ 2 var txt= $(this).html(); 3 $(this).html(txt.replace(/www\.example\.com/g,'test.example.co.jp')); 4});

###.htaccess

htaccess

1RewriteEngine On 2RewriteCond %{HTTP_HOST} ^www.example\.com$ [NC] 3RewriteRule .* test.example.co.jp%{REQUEST_URI} [R=301,L]

何か根本的に間違えているのかもしれませんが
何卒お力をお貸しいただけないでしょうか?

###補足
とあるサイトのリニューアル準備をしています。
最終サブドメインで公開をするのですが、画像やCSSはメインドメインを参照するため絶対パスで指定をしています。

あらかじめ本番用のパス(置換前)で記述をしておき、
テストの時点ではテスト用のパス(置換後)のURLを参照させるが目的です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

jQueryでやるのであればこんな感じじゃないでしょうか。 linkタグとimgタグだけを対象にしています。

html

1<script type="text/javascript"> 2 $(document).ready(function(){ 3 $('link').each(function() { 4 var url = $(this).attr('href'); 5 if (url) { 6 $(this).attr('href', url.replace(/www\.example\.com/, 'test.example.co.jp')); 7 } 8 }); 9 $('img').each(function(e) { 10 var url = $(this).attr('src'); 11 if (url) { 12 $(this).attr('src', url.replace(/www\.example\.com/, 'test.example.co.jp')); 13 } 14 }); 15 }); 16</script>

また .htaccess で URLを書き換える方法は、基本的に www.example.com.htaccess に記述して、URLをReWriteするやり方なので、本体サイトの挙動が変わってしまうので、今回の利用ケースにはマッチしないと思います。

もし .htaccess(Apache) だけでやりたいなら、サブドメイン用のサイトのApacheにプラグインを追加して、レスポンスボディを書き換えるなどは可能だと思います。

http://www.psi-net.co.jp/blog/?p=1111

その他の案

  • WordpressのPHPが自分でいじれるのであれば、HTMLを吐き出す際に、JSと同様に正規表現でURLを書き換えてしまう。
  • Apache(Webサーバ)の前段に別途プロキシサーバをおいて、プロキシサーバで、レスポンスHTMLのURLを書き換える

投稿2017/04/08 18:41

編集2017/04/08 18:44
tell_k

総合スコア2120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umauman

2017/04/08 19:31

ご回答ありがとうございます。 記述いただいたソースで上手くいきました! とても嬉しいです。 href属性とsrc属性を書き換えるのですね。大変勉強になりました。 1つだけ質問なのですが、 if (url) { }で囲むのはどのような役割があるのでしょうか? 外してしまっても動作をいたします。 ただ、気のせいか画像の読み込みが遅くなるような気もします。 もし差支えなければこちらご教授いただけますととても助かります。 (お時間許せばで大丈夫です) .htaccessの場合は「www.example.com」側に設置しないといけないのですね。このあたり無知でした。 加えて本ケースに向かないのですね。 (Apacheはハードルが高く…悲) この度は本当にありがとうございました!
tell_k

2017/04/09 01:34

> if (url) { }で囲むのはどのような役割があるのでしょうか? これは万が一 linkタグやimgタグに urlの属性(href, src)を書き忘れてしまった場合、url.replaceを呼ぶとエラーになるので、そうならないために、ifでチェックしています。外して遅くなるということはないと思いますが、外したことでエラーになって、処理が中断してしまう可能性はあると思います。
umauman

2017/04/09 05:23

解説ありがとうございます。 記述しておいた方が良さそうですね。 勉強になりました。 何度もすみませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問