画像ブロックのsrcに現れるパスについて

2016年3月17日 at 19:43

はじめて投稿します。Concrete5を使い始めて半月ほどです。画像ブロックを埋め込むとを出力しますが、このパスにスキームやドメイン名などが埋め込まれて困っています。
元々の原因は、インストールした後にWebサーバの設定を変更して、見せるURLを変更したことだと思います。しかし、だからといって相対パスで埋め込んでくれれば影響ないのに、なぜこのような仕様なのでしょう。
やりたいことは、http://private.domain/から編集してhttp://public.domain/で公開するという運用なのですが、privateの方から編集すると src=http://private... のようになり、外から見えなくなってしまうのです。相対パスで出力させる方法はないものでしょうか?

タグ:

更新用のドメインでアクセスする際は、キャッシュをしない (Re: 画像ブロックのsrcに現れるパスについて)

2016年3月18日 at 10:38
こんにちは。

相対パスで出力させることは、 concrete5 のみならず、 CMS としてあまりよろしくない方法です。

なので、代替案を2案用意しました。

■ 案1:そもそも private domain を使用せず、IP 制限などの他の手法を使う

■ 案2:Private Domain でアクセスする際は、キャッシュを無効化する

案1の詳細はこちらに書きました。
http://concrete5.co.jp/blog/concrete5-access-restriction

案2はちょっとおまちください〜。
 

Re: 画像ブロックのsrcに現れるパスについて

2016年3月18日 at 13:28
ご返信、有り難うございました。
CMS設計論は勉強したことないのですが、相対パスはあまりよろしくないのですね。でも、ページ間のリンクは相対パスを出力しますよね。その後色々試行錯誤して、ファイルマネージャーは常に絶対パスを出力するという振る舞いであることを確認しました。
そこで私が気にしている問題点と改善案を今一度明らかにします。ファイルマネージャーは、書き込む時点のHTTP_HOSTを静的に記憶して、そのまま出力するようです。これを改変して、読みだす時点のHTTP_HOSTを動的に埋め込むようにすれば、どこからアクセスしても大丈夫になると思います。この改変案に、何か不都合はありますか?
取り急ぎは、PHPを呼び出す際、常にHTTP_HOSTが同じになるように、Webサーバの設定をproxyなどで工夫すれば解決できそうです。ただ、なぜ静的に記憶するのか、理由を知りたいところです。
 

Re: 画像ブロックのsrcに現れるパスについて

2016年3月19日 at 1:52
誤報でした。「書き込む時点のHTTP_HOSTを静的に記憶している」というのは、間違いです。きちんと、実行時のHTTP_HOSTを埋め込む動的なリンクでした。
 言い訳というか、なぜ自分の中で混乱を招いたのか説明しておきます。1台のマシン、1つのC5インスタンスを複数のドメインに見せる実験をしていました。Webサーバにnginxを用いて、あまり意識せずにfastcgi_paramsや proxy_paramsを混在させていたためか、server_nameと異なるホスト名が埋め込まれる症状が現れ、混乱の中で解釈を間違えてしまいました。
 丁寧に設定を見直すことで、1つのC5インスタンスを複数のドメインに見せ、どこからでも編集できることを確認しました。お騒がせいたしました。お恥ずかしい限りです。