- ベストアンサー
PHPのクエリ付(?)URLの転送
サーバーに関する詳しいことはまったくわかってない人間なのですが、 現在PHP?smarty?ベースのサーバでホームページを開設しています。 それをhtmlファイルを自由に配置できる一般的なサーバと分けて管理することになりました。 PHPのサーバを(A)、htmlのサーバを(B)とすると、 (B)サーバでトップ、カテゴリーページをhtmlで作成。 (A)サーバで詳細ページをPHPで作成します。 (A)サーバーで使っていたドメイン(xxx.jp)を(B)サーバにうつし、 (A)サーバに新しいドメイン(???.jp)を割り当てます。 現在のページ(Aサーバ)は http://www.xxx.ne.jp/?xyzoo=ooooo http://www.xxx..ne.jp/?mode=vrae=oooooo&awaa=1 (oooは数字) のようにページが作成されます。 その他(txtファイルなど)ファイルはアップロードできません。 それを(B)サーバではhtmlで作成し、ファイル名もabc.htmlなどと変わります。 ですので http://www.xxx.ne.jp/?mode=vrae=oooooo&awaa=1 にアクセスしてもトップページが表示されるだけです。 これらにアクセスすると、新しいファイルに転送するにはどうすればよいでしょうか。 (http://www.xxx.ne.jp/?mode=vrae=oooooo&awaa=1にアクセスすると、 http://www.xxx.ne.jp/abc.htmlに転送 (http://www.xxx.ne.jp/?mode=vrae=oooooo&awaa=2にアクセスすると、 http://www.xxx.ne.jp/def.htmlに転送 ) また、http://www.xxx.ne.jp/?xyzoo=oooooにアクセスされると、 今度は、違うサーバのhttp://www.???.ne.jp/?xyzoo=oooooです。 リダイレクトとか色々調べてみたのですが、結局わからずでした。。。 (.htaccess で Redirect permanent /?mode=vrae=oooooo&awaa=1 http://www.xxx.ne.jp/abc.html としてみたけどだめでした…) もう一つ、今度は 新しいドメイン(http://www.???.ne.jp/)になった(A)サーバについて、 詳細ページはhttp://www.???.ne.jp/?xyzoo=ooooo等で使うのですが、 トップページもアクセスできるようになります。 トップページhttp://www.???.ne.jp/にアクセスされると、新しいサーバのhttp://www.xxx.ne.jp/に転送したく思ってます。 現状では、(A)サーバの転送はmeta や javascript で転送する方法しか思いつきません。 PHP?smarty?で転送する方法は無いでしょうか。 なお、新しい(B)サーバは一般的なサーバ(?)で、ファイルは基本的に何でも置けます。 古いPHPの(A)サーバはsmarty.server?のタグでページを作成し、 その他ファイルを置けないどころか、head内も触れません…。 (metaやjavascriptはbody内に書くしかないのです) どなたか詳しい人、教えていただけませんか。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
(B)サーバー上のファイルのJavaScriptで対応するのが、一番簡単でしょうね。 head の中で、渡されたURLによって、飛び先を変える関数を書いて、body のonLoad属性で関数を呼び出す。 これでいけるでしょう。
その他の回答 (4)
- masa6272
- ベストアンサー率66% (93/140)
PHPのような言語は、ファイルの読み込みや書き込みを行いますので、 静的なHTMLと別のところに置くというのは、正しい管理かもしれません。 で、私の理解力の問題かもしれませんが・・・ (A)サーバー PHPプログラムが動き、Smartyテンプレートが格納されている。 PHPプログラム、Smartyテンプレートの編集が可能 (B)サーバー 静的なHTMLが置かれている。 でいいのでしょうか? 「HTMLの<head> の部分が触れない」 「(B)サーバーには、PHPも置ける」 この辺の状況が見えないんですが。 何が、できて何ができないか、ピンときません。 HTMLは静的ですので、HTMLから飛ばすにはJavaScriptしかないです。 JavaScriptでしたら、body の onLoad にでも、JavaScriptを入れるんですかね? 本当は、headに関数定義を書いて、onLoadでは、関数呼び出しの方がすっきりしますが。 一度、PHPにもってくれば、URLの引数部分を自由に取り出せますので、いかようにもできますが・・・ PHPが書けて、Smartyが分からないと・・・ 無理です。
補足
申し訳ございません、説明不足でした。 (A)サーバ ショッピングカートシステムをレンタルで借りています。 例えばここです。 http://cart1.fc2.com/setcart_sample/ ここがどのようなシステムやっているかはわからないですが、 このようなシステムです。 ただ、上記サンプルURLではhead内も触れるみたいですが、 私の借りているカートは、テンプレートでbody内しか編集できません。 そのカートシステムはPHPでsmartyで動いて(?)います。 (B)サーバ カートシステムではなく、普通のftpサーバ(?)で、 htmlでもcgiでも何でも配置でき、もちろんhead内もいじれます。 今は (A)サーバ http://www.xxx.ne.jp/ ですが、これが (A)サーバ http://www.???.ne.jp/ (B)サーバ http://www.xxx.ne.jp/ となります。 (AサーバのドメインをBへ、Aサーバは新しいドメインになります) 現在(A)サーバで運営しているのですが、商品部分だけを残し、topやカテゴリーページは(B)サーバでHTMLで作成しなおします。 この場合(A)サーバで http://www.xxx.ne.jp/?xyzoo=ooooo だったurlは、(B)サーバ上で存在しません。 ファイル名も(B)サーバでは変わるので(htmlで違う名前で作成していますので)ここにアクセスされると http://www.xxx.ne.jp/?xyzoo=ooooo とアドレスは出ても、トップのhtmlが表示されるだけです。 この場合にhttp://www.xxx.ne.jp/?xyzoo=ooooo にアクセスすると、 http://www.xxx.ne.jp/abc.html (Bサーバ) に転送したり http://www.???.ne.jp/?xyzoo=ooooo (Aサーバ) に転送したいのです。 また、(A)サーバにはドメインが変わっても、新しいドメインで実際はトップページやカテゴリーページが残っています。 これらにアクセスされると、 (B)サーバのトップやカテゴリーページに転送したいと思っています。 説明わかりますでしょうか… 文章力不足で申し訳ございません ><
- masa6272
- ベストアンサー率66% (93/140)
確認ですが、(B)サーバーは、スタティックなHTMLだけを置くサーバーでしょうか? それでしたら、JvaaScriptで、Window.location.search属性の値によって、Window.location.hrefを書き直すくらいしか、思い浮かびません。 PHPまで、持ってくればプログラミング言語ですので、色々できますが・・・ ところで、PHPファイルの置いてある、サーバーアクセスで、ファイル名がないんですが・・・index.phpが読まれるような設定ですか? 一応、PHP、Smartyは、プロのつもりですが・・ はっきり、言ってこれだけでは、状況が良くわかりません。
補足
javascriptでそんなことができるんですね。 やり方はよく分からないですが、明日にでも調べて挑戦してみます。 (B)サーバはスタティックなHTMLだけです。 phpの設置もできるのですが、何しろプログラミングが分からないので^^; PHPファイルのある(A)サーバは、テンプレート化されたショッピングカートシステムです。 メニューなどの共通ページを作成し、コンテンツ共通テンプレートや商品共通テンプレートを include file で読み込んで、商品タグ({productid}など)で商品情報を表示するシステムです。 index.phpが読み込まれる設定なのかどうかはよく分かりません… トップページは http://www.xxx.ne.jp/ カテゴリーは http://www.xxx.ne.jp/?mode=vrae=oooooo&awaa=1 見たいに表示されます。 コレに拡張子.phpをつけても、そのページもトップページが表示されます… お手数をおかけします。
- x415f484f
- ベストアンサー率71% (57/80)
> php自体があまりわからないのですが 申し訳ありません。 {php} header('Location: http://www.xxx.ne.jp/'); {/php} のようなことはできないのでしょうか? と単純に思ったのです。
お礼
phpでそのような方法があるのですね、 少し勉強してみます。 ありがとうございます!
補足
{php} header('Location: http://www.xxx.ne.jp/'); {/php} と <{php}> header('Location: http://www.xxx.ne.jp/'); <{/php}> と試してみましたが、無理でした…TT お世話かけます…
- x415f484f
- ベストアンサー率71% (57/80)
※ 確認ですが。 > head内も触れません…。 と仰られているのは index.php に <? if(引数というかQUERY_STRINGが空であれば真){ header('Location: http://www.xxx.ne.jp/'); } ?> ということが出来ないと仰られている意味でしょうか? # smarty についての概要はわかりますが実際には使っておりませんので。
補足
php自体があまりわからないのですが、 <body>タグ内にはかけます。 <head>~</head>内は一切触れないんです… 共通メニュータグを記入やら、topのタグ記入、カテゴリーのタグ記入などで、テンプレート化といえばいいのでしょうか、 そのようなシステムになっております。 Yahoo!shoppingみたいなシステムといえばよいのでしょうか。 ただ、CSSやHTMLタグはほぼ使え、body内に記述になるのですが、 他サーバの外部ファイルも参照することはできます。
お礼
色々教えていただいてありがとうございます!
補足
ということは、(B)サーバ内に http://www.xxx.ne.jp/?xyzoo=ooooo 等のファイルを作らないといけないって事ですよね。 私にできるのかな… ではちょっと調べてみます。