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

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

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

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

Q&A

解決済

2回答

9021閲覧

wordpress リンクのパスを絶対パスから相対パスに変更する方法

dreamfactory

総合スコア20

WordPress

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

0グッド

3クリップ

投稿2017/09/17 03:54

お世話になります。

wordpressでHPを作成していたところ、リンクが絶対パスになっていたことに気づき
調べたところwordpressは標準で絶対パスになっているということがわかりました。

しかし、将来的にドメインの引越しを考えており、相対パスに変更したいです。

ネットで調べて下記をfanctions.phpに追記することで相対パスに変更できると

書いてあり試してみたのですが変わらなかったです。

参考場所
wordpressのリンクのパスを絶対パスから相対パスに変更する方法

function make_href_root_relative($input) { return preg_replace('!http(s)?://' . $_SERVER['SERVER_NAME'] . '/!', '/', $input); } //パーマリンク絶対パス→相対パス function root_relative_permalinks($input) { return make_href_root_relative($input); } add_filter( 'the_permalink', 'root_relative_permalinks' );

使用テーマはFirstです。

よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

All-in-One WP Migration プラグインを使えば、ドメインを置換しつつ簡単に引っ越しできますので、そもそも相対パスにする必要がありません。他に、黒い画面に抵抗がないなら word move (開発環境VCCWにも含む) というものもあります。

投稿2017/09/17 12:15

takna

総合スコア784

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

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

dreamfactory

2017/09/17 15:55

ありがとうございます。まずは試してみます
guest

0

ベストアンサー

次のページのコードを試してみてください。Facebook等と連携する場合に支障が無いです。

[WordPress] すべての URL を相対 URL に置換する ( ただし OGP 内の画像等は、置換しない)
https://gist.github.com/wokamoto/4633166

投稿2017/09/17 04:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

dreamfactory

2017/09/17 08:40

回答ありがとうございます。 これはどこかに追記するのでしょうか それとも書き換えるのでしょうか
退会済みユーザー

退会済みユーザー

2017/09/17 08:47

テーマのfunctions.phpに追記です。
dreamfactory

2017/09/17 10:06

ありがとうございます。おかげさまで相対パスで表示されるようになりました。ただ、新たな問題として、リンク先の階層がひとつ上を見に行ってしまいます。 例えば、/abcの中のindex.phpから同じ/abcのなかにあるtest.phpへのリンクが/abc/test.phpとなってしまいます。cssも全てこの形になってしまっています。 どこを修正すればよろしいのでしょうか?
退会済みユーザー

退会済みユーザー

2017/09/17 10:54

/abcやtest.phpは何の話しですか?
dreamfactory

2017/09/17 11:08

functions.phpの位置が/abc/wp-content/themes/first/functions.phpとなっています。 この/abcがサーバー上のルートディレクトリです。 wordpressもルートディレクトリにインストールしています。 今まで絶対パスだったのが教えて頂いたように追記したら相対パスにすることができました。 ただ、リンクが通常href="index.php"となるはずのものが、href="/abc/index.php"と同じ/abc内のファイルからもなってしまうため、リンク先にいけなかったり、cssを参照できなかったりしてしまいます。
退会済みユーザー

退会済みユーザー

2017/09/17 11:25

そのリンクはWordPressで生成したものですか?でなければ書き換えれば良いだけではないでしょうか?
dreamfactory

2017/09/17 11:49

wordpressで作成したものになります。
退会済みユーザー

退会済みユーザー

2017/09/17 12:11

自動的に生成したリンクなんでしょうか?どの部分のことなのかもう少し具体的に書いてください。
dreamfactory

2017/09/17 12:41

自動的に生成されるcss等のリンク全てです。 なぜかルートディレクトリを含むリンク先になってしまっています。 そのためリンク切れ状態になってしまっているのです。 WprdPress自体はルートディレクトリにインストールしています。
退会済みユーザー

退会済みユーザー

2017/09/17 12:52

functions.phpのバックアップを取って元々あるコードと今回追加したコードだけを書いた場合はどうなりますか?
dreamfactory

2017/09/17 13:13

functions.phpはなにもいじってなくて、今回教えて頂いたコードを追加しました。 教えて頂いたコードの一番上の <?php の部分は消さないとエラーになるので消して、一番下に追加しております。
退会済みユーザー

退会済みユーザー

2017/09/17 14:08

最上部の<?phpは消さないと駄目ですね。 追加されたコードが無くてそれですか… プラグインを入れてれば全て停止するとどうなりますか?
dreamfactory

2017/09/17 14:43

停止して、一応パソコンを再起動してみたのですが変わらなかったです・・・。 夜遅くまですいません・・・。
退会済みユーザー

退会済みユーザー

2017/09/17 14:54

テーマはこれですかね? https://ja.wordpress.org/themes/first/ 手元の環境でそのテーマにそのコードを追加して特に問題無いんですよね。 ちなみにPHP7の場合エラーが出るので修正が必要ですが、そのエラーと今回の問題は無関係です。 PCの再起動とは?ローカル環境でやってますか? まぁ、この問題と時に関係ないですけど。 ブラウザのキャッシュを削除するか、別のブラウザを使っても同じでしょうか? あと気になっているのが、test.phpは何ですか?パーマリンクで.phpを入れているという意味ですか?
dreamfactory

2017/09/17 15:28

遅くにすみません。Wordpress初心者なもので・・・ 今回借りているサーバー内の/web/abcにWordPressをインストールしました。 サーバーの仕様として/webの中の任意のディレクトリが下記のように表示されます。 サーバー名/abc/ この/abcディレクトリにWordPressをインストールし、ページを作成したら普通にブラウザ上からページが見れました。 今回ドメインを取得し、ドメインの参照先が/web/abcに設定しました。 ドメイン名でindex.phpは確認できたのですが、別のページに飛ぶとURLがドメイン名ではなく、サーバー名/abc/パーマネント/ となっており、理由が絶対パスだからだとわかりました。 なので、相対パスに変更したくて、質問させて頂いたのです。 おかげさまで、相対パスにはなったのですが、index.phpの形が崩れており、何故かとソースを見たらcss等の全ての参照先の頭に/abc がついていたのです。 そしてもうひとつの問題として、index.php以外のページは、サーバー名/abc/パーマネント/ なら表示されるのですが、ドメイン名/パーマネント/ で表示されません。ちなみに、ドメイン名/abc/パ-マネント/ でも表示されません。 Internal Server Errorとなってしまっています。 通常のhtmlなら /abc がルートディレクトリとなり、他のページもルートディレクトリまでのパスがURLに表記されていたら見れていたのですが、何故WordPressではそうならないのかがわかりません。 根本的に何か間違っているのでしょうか?
退会済みユーザー

退会済みユーザー

2017/09/17 15:45

トップページがhttp://example.com/abcでしょうか? 管理画面、一般設定のWordPress アドレス (URL)やサイトアドレス (URL)にabcが入ってますよね? であるならabcはルートディレクトリではないと思います。 しかし、インストールディレクトリがどうであれそのような現象は起きないので何か別の問題があるように思いますが、現状では把握できません。 正常に稼働している状態で500エラーが出るのは異常です。
dreamfactory

2017/09/17 15:54

トップページはhttp://example.com/ です。 サーバー名/web/abc/ = http://example.com/ という形で設定しています。 ですので、/abc はルートディレクトリになります。 指摘していただいたように別の問題があるのでしょうね・・・
退会済みユーザー

退会済みユーザー

2017/09/17 16:07

再確認ですがコードを追加すると一部のURLがhttp://example.com/abcになるということですか? 実際はhttp://example.comは入ってないと思いますが、そこは無視してください。頭が混乱してきました。
dreamfactory

2017/09/19 11:34

返信が遅くなってしまいすいません。。 私も頭が混乱してきました。 私なりに、ワードプレスはサーバー依存なところがあるのかな?と仮定することにしました。 今回、ay03様のおかげでワードプレスが少しだけ理解できました。 とりあえず、自社サーバーに落とさず最初からやり直すことにします。 お手数おかけして申し訳なかったです。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問