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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

8142閲覧

.htaccessでURLのディレクトリの一部を隠せないか?

Kijima

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2017/02/28 09:34

編集2017/02/28 10:23

ブラウザのURLに表示されるディレクトリの一部を、htaccessで省略表示できないか悩んでおります。

例として、下記のようなURLがあるとして、途中の「userdata」を非表示にしたいと思います。

(実際にアクセスしているURL)
http://www.example.com/userdata/3wrds8fd/
http://www.example.com/userdata/ggr3es/
http://www.example.com/userdata/f4fde/

(ブラウザ表示されるURL)
http://www.example.com/3wrds8fd/
http://www.example.com/ggr3es/
http://www.example.com/f4fde/

使用しているレンタルサーバでは、webサーバ側の設定変更ができない為、
htaccessのリダイレクトでなんとかできないか、試行錯誤しておりますが、なかなか上手く行きません。
そもそも、可能なのかも疑問がありますが・・・

ご存じの方がいらっしゃれば、ご教授お願いいたします。

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

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

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

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

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

Kijima

2017/02/28 10:24

修正いたしました。ご指摘ありがとうございました。
kei344

2017/02/28 11:04

修正ありがとうございます。試したhtaccessも追記してはいかがでしょうか。
guest

回答2

0

ベストアンサー

ブラウザのアドレスバーにhttp://www.example.com/3wrds8fd/と打ち込んだら、アドレスバーの表示はそのままで、http://www.example.com/userdata/3wrds8fd/にアクセスしたいと言うことならリライトで出来ます。

RewriteEngine on RewriteRule (.*) /userdata/$1

すべての場合に/userdataが挿入されるので、除外したいケースがあるならRewriteCondを追加します。

#追記
ブラウザのアドレスバーにhttp://www.example.com/userdata/3wrds8fd/と打ち込んだら、アドレスバーをhttp://www.example.com/3wrds8fd/になるようにしたいと言うことなら、リダイレクトです。

RewriteEngine on RewriteRule userdata/(.*) $1 [R=301]

投稿2017/02/28 13:32

編集2017/03/01 14:47
otn

総合スコア84423

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

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

Kijima

2017/03/01 11:42

回答ありがとうございました。 頂きましたコメントを参考にして、色々やってみたのですが、なかなか上手く行きませんでした。 現時点で、下記のように設定しましたが・・・ RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} (^/userdata) RewriteRule ^/(.*)$ /userdata/$1 「http://www.example.com/userdata/test001/」でアクセスした場合、 ブラウザでの表示上は「http://www.example.com/test001/」となって欲しいのですが、変化なし。 素人なりに、色々やってみたのですが、どーしても「userdata」を非表示にする事ができませんでした。 「userdata」フォルダ内には、サイト利用者の個人データを格納するフォルダを置く予定ですので、それらをルートに置くのは避けたいところです。 おそらく、RewriteRuleの記述が間違っていると思うのですが、どうでしょうか?
otn

2017/03/01 14:47

追記しました。
Kijima

2017/03/02 12:11

ご回答ありがとうございました。 内容的には、最初のご回答とおりリライトで間違いありません。 ただ、ご指摘のとおり全ての場合に「/userdata」が挿入されてしまい、Internal Server Errorが発生してしまってます。 RewriteEngine on RewriteRule (.*) /userdata/$1 この場合、下記の例のような動作になるように、RewriteCondに条件を記述しようとしてます。 例) ブラウザ、またはCGIから下記のURLをリクエスト。 http://www.example.com/3wrds8fd/ ブラウザ上はで上記URLが表示されているが、実際は下記URLを参照している。 http://www.example.com/userdata/3wrds8fd/ しかし、「http://www.example.com/」のルートには、「cgifolder」、「imagefolder」、「a_folder」・・・など複数のフォルダがあり、それらが参照されている場合は、「/userdata」の挿入はしない。 恐らく、%{REQUEST_URI}で取得したURLを見て、「/userdata」を挿入すべきか判断すればよいと考え、試行錯誤しましたが万策尽きた状態です。 そもそも、この考え方自体が正しいのかの判断も不明な状態です。 RewriteEngine on RewriteCond ????????????? RewriteRule (.*) /userdata/$1 何度もご質問するのも恐縮ですので、一先ず今回を最後としまして、上記問題を解決する記述方法があればご指摘賜りたく存じます。 お手数をおかけいたしますが、よろしくお願いいたします。
otn

2017/03/02 14:24

RewriteEngine on RewriteCond %{REQUEST_URI} !^/cgifolder/ RewriteCond %{REQUEST_URI} !^/imagefolder/ RewriteCond %{REQUEST_URI} !^/a_folder/ RewriteRule (.*) /userdata/$1 とかですね。
Kijima

2017/03/14 00:33

お返事が遅くなりまして、大変失礼いたいました。 あれから、試行錯誤いたしまして、昨日ようやく問題が解決いたしました。 htaccessに関しては素人当然の為、随分と時間がかかり、再三ご教授頂きましたが、お陰様で予備知識も含め、大変為にになりました。 また、機会がございましたらよろしくお願い申し上げます。 ありがとうございました。
guest

0

サーバーにより仕様がそれぞれ異なる事があります。
どちらのサーバーをお使いでしょうか?

投稿2017/02/28 09:57

miconear

総合スコア31

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

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

Kijima

2017/02/28 10:10

レンタルサーバは、ロリポップを使用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問