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

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

新規登録して質問してみよう
ただいま回答率
85.35%
.htaccess

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3365閲覧

.htaccessでルート階層以外でルートパスを使いたい

pondering

総合スコア104

.htaccess

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/11/26 07:21

編集2020/11/26 07:26

やりたいこと

画像のsample.com/test/sample/内のファイルはルート相対パスで作成されたサイトを移行したため
このままだとパスがおかしく、cssやjsなどが表示されない状態です。

ファイルのパスの書き換えをせずに
sampleディレクトリ内のファイルの場合のみ、
/sample/をドキュメントルートとして表示できるようにしたいです。

(希望のURL例 https://sample.com/test/sample/contact.html)

イメージ説明

試したことなど

サブドメインを作成してsampleフォルダ内のデータを移行するなども考えましたが
可能であれば、testディレクトリ以下で完結させたいと思い、.htaccessでできないかと思いました。

他のルート以下のファイルには、公開中のwebサイトやファイルなども入っているため
sampleディレクトリ以下以外には影響がないように行いたいです。

下記URLが一番やりたいことに近いと思い、参考にしてみましたが、うまくいきませんでした。
https://www.gravity-works.jp/gravica/web/htaccess/004589.html

sampleディレクトリ内のファイルの場合のみ、
/sample/をドキュメントルートとして表示する方法をご教授いただきたいです。
よろしくお願いいたします。

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

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

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

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

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

otn

2020/11/26 10:49

> sampleディレクトリ内のファイルの場合のみ、/sample/をドキュメントルートとして表示する方法 具体的にどういう意味でしょうか?
pondering

2020/11/26 11:44

sampleディレクトリの中にあるファイルが全てサイトルート相対パスで、 <link href="/css/style.css"> の記述になっているため、現在ルート直下のファイルを参照してしっているのですが、 図のようなディレクトリ構造や、simpleディレクトリ内のファイルのパスの記述を変更せずに .htaccess を追加することでURLは【https://sample.com/test/sample/contact.html】のように して表示することは可能でしょうか。 質問が悪くすみません。
guest

回答1

0

ベストアンサー

「サイトルート相対パス」って、要は「絶対パス」ということですよね。

Apache

1RewriteEngine on 2RewriteRule ^(css/.*) /test/sample/$1 3RewriteRule ^(js/.*) /test/sample/$1

ドキュメントルート直下に、別のcssjsディレクトリがあるとそれらも全部リライトするので、
その場合はリファラーを見るなどが必要です。

Apache

1RewriteEngine on 2RewriteCond %{HTTP_REFERER} ^https://example.com/test/sample/ 3RewriteRule ^((css|js)/.*) /test/sample/$1

投稿2020/11/26 12:00

編集2020/11/26 12:07
otn

総合スコア85901

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

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

pondering

2020/11/27 01:23

ありがとうございます。 おっしゃる通り、ドキュメントルート直下にも別のcssやjsファイルがあるため リファラーを見るなどが必要な場合の.htaccessの記述を追加したところ、うまく表示されませんでした。 さくらのサーバーの初期ドメインでテストしておりまして http://●●●.sakura★.ne.jp ★の箇所にバックスラッシュを入れたのですがこれが間違っているのでしょうか。  また、sampleディレクトリ内は、cssやjsフォルダ以外でも、画像のフォルダや、サイト内のリンクも ルートパスになっているため、.htaccessの記述は RewriteRule ^(.*) /test/sample/$1 だったり リダイレクトの処理が必要となってくるのでしょうか。 色々試しにやってみたところ、他のtest内の他のディレクトリ内のサイトが表示されなくなったり ドキュメントルート直下のサイトが表示されずに sample内のindex.htmlが誤って表示されたりで分からない状態です…。
otn

2020/11/27 02:05

> うまく表示されませんでした。 具体的な現象を書いてください。 > ★の箇所にバックスラッシュを入れたのですがこれが間違っているのでしょうか。  実用的には、バックスラッシュを書かずURLそのままでいいです。 > 画像のフォルダや、サイト内のリンクもルートパスになっているため、 それは無理でしょう。 対応するとなると、使っているURLをすべて列挙することになります。 書き直さないのなら、ドメイン分けるのが良いです。
pondering

2020/11/27 03:12

otn様、早速のご回答をありがとうございます! ドメインを分ける方法で進めます。 もっときちんとした質問ができるように努めます。ありがとうございました。 ----------------------------------------------------------------------------------- ■記載頂いた内容について > うまく表示されませんでした。 具体的な現象を書いてください。 >>こちらキャッシュか何かの影響を受けていたのか 再度確認したところcssもjsも動いておりました。大変申し訳ございませんでした。 > 画像のフォルダや、サイト内のリンクもルートパスになっているため、 それは無理でしょう。 対応するとなると、使っているURLをすべて列挙することになります。 >>そうなのですね、サブドメインで対応したいと思います。 分かりにくい質問内容の中、ご回答いただき感謝です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問