良い方法はないでしょうか?どうやら、.htaccessで「RewriteEngine on」を使ってルートを指定するのが、よさそうなのですが、
使い方がまちがっているのか、どうもうまくいきません。
「RewriteEngine on」の使い方でもいいですし、他の方法でも構いません。
ご教授頂ければ幸いです。宜しくお願い致します。
※<base href="">を使用して相対パスで記述したほうがいいとか、最初から相対パスを使用した方がよいというのは無しで、お願いします。
以下のようなコンテンツを別サーバの / や /foo に置いてもうまくリンクが繋がるようにしたいと言うことでしょうか?
■/に置く場合 (/1.html, /2.html)
/.htaccessに以下を記述します。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^abc/(.*)$ $1 [L]
■/fooに置く場合(/foo/1.html, /foo/2.html)
/.htaccessに以下を記述します。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^abc/(.*)$ foo/$1 [L]
元のコンテンツが/をベースにしている場合はこんな感じ
■/xyzに置く場合 (/xyz/1.html, /zyx/2.html)
/.htaccessに以下を記述します。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ xyz/$1 [L]
ちなみに上記 RewriteCond で !-d や !-f をチェックしているのは、本当にそこに実ファイルがある場合はそこにある実ファイルを優先するという意味です。
(どれも未テストです。上手く動かなかったらすみません…)
ご丁寧な回答、大変ありがとうございます。
とりあえず、絶対パスで記述すると、CSSが効かないのですが、
上の階層に、CSSを移動すると効くようになります。
おそらく、レンタルサーバー側の設定でドキュメントルートが一個上の階層になっているのかな?と思い、
解決方法を調べてるうちに、.htaccessでドキュメントルートのパスを指定すればいいらしい?
ということを知り、以下のようにやってみました。
ファイルを入れてるフォルダは「○○○.com/●●●」という感じのサブフォルダで、アクセス制限をかけてます。
設置先のドメインのドキュメントルートは「/home/□□□/○○○.com/public_html/」です。
そこで、http://www.nurs.or.jp/~sug/homep/rewrite/rewrite15.htmを参考にして、
「○○○.com/●●●/.htaccess」のなかに以下のような記述をしました。
-------------------------------------------------------------
AuthUserFile "/home/shadow/shadow.xsrv.jp/htpasswd/.htpasswd"
AuthName "Member Site"
AuthType BASIC
require valid-user
↑ここまでは、レンタルサーバー側で自動で生成されたもの↑
RewriteEngine on
RewriteBase /home/□□□/○○○.com/public_html/●●●
-------------------------------------------------------------
しかし、どうもうまくいきません。他のパスも選択できうるものはすべてやってみたのですが、うまくいかないです。
ただ、TOPフォルダにおくと、普通に絶対パスの記述だけでうまくいく(.htaccessなし)ので、
もしかしたら、レンタルサーバー(xserver)側でサブフォルダ内のファイルのドキュメントルートも、
強制的に「/home/□□□/○○○.com/public_html/」
になる設定になっているのかと思って、今に至ります。
ご教授いただければ大変うれしく思います。宜しくお願い致します。