見出し画像

#86 アドレスバーに入力したURIはそのままに、内部的に他のディレクトリにアクセスする方法

何を言っとるのかわからないのかもだが、こんな構成のサーバがあるとする

何もしないと、https://www.test.co.jp/data/hoge/aaa.php とか
https://www.test.co.jp/static/piyo/ccc.png で表示されるが、
途中の「data」ディレクトリとか、「static」ディレクトリをURIに表示させたくない。

そこで、chatGPTさんに次のように聞いてみた
(これは失敗談 成功談はページ下部)

htaccessで一つのサーバで
https://www.test.co.jp/data/hoge/aaa.php を
https://www.test.co.jp/hoge/aaa.php のように表示
https://www.test.co.jp/static/piyo/img/ccc.png を
https://www.test.co.jp/piyo/img/ccc.png のように表示する方法を教えてください

RewriteEngine On
RewriteRule ^data/(.*)$ /$1 [R=301,L]
RewriteRule ^static/(.*)$ /$1 [R=301,L]

こ、これは ただのリダイレクトやないか。。

気を取り直して、違う聞き方にしてみました(成功した)

htaccessで一つのサーバで
https://www.test.co.jp/hoge/aaa.php と打ち込んだらアドレスバーの表示はそのまま
https://www.test.co.jp/data/hoge/aaa.php にアクセスしたい
https://www.test.co.jp/piyo/img/ccc.png と打ち込んだらアドレスバーの表示はそのまま
https://www.test.co.jp/static/piyo/img/ccc.png にアクセスしたい

RewriteEngine On
RewriteRule ^hoge/(.*)$ /data/hoge/$1
RewriteRule ^piyo/(.*)$ /static/piyo/$1

/hoge/aaa.php に書いた、staticなしの<img src="/piyo/img/ccc.png">も
無事に表示されました。

正規表現がわからなすぎて、時間がかかりすぎました。

プロンプトの参考↓


最初はドキュメントルート複数作れんのかとか悩んでた。。。一つだけなら下記の方法がよさそう

htaccessについて詳しく学べそう↓

正規表現ドリルで頑張るか

この記事が気に入ったらサポートをしてみませんか?