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

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

ただいまの
回答率

88.64%

.htaccess RewriteRuleを記入しURLを省略しようとするも、思い通りに動作しない

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 330

knive-sout

score 5

やりたいこと

・ディレクトリの一部を省略しアクセスする
・ブラウザ表示上のURLは変えない

ブラウザ上の表示URL(例)
example.com/yamada/
example.com/suzuki/profile.jpg

実際にアクセスしているURL
example.com/name/yamada/
example.com/name/suzuki/profile.jpg

やったこと

※ブラウザのキャッシュはきちんと削除しています

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URL} !^/name/
RewriteRule ^(.*)$ /name/$1


① example.com/yamada/ にアクセス
→ ブラウザに表示されるURLが example.com/name/yamada/ となってしまい name が表示されてしまう。ですが内容はきちんと表示されます。
name は表示させないようにしたい。

② example.com/yama/ にアクセス(存在しないフォルダ)
→ Internal Server Errorになってしまい、error.logを見ると以下のようになっていて、

[Sat Jun 06 10:39:55.690590 2020] [core:error] [pid 1398] [client 192.168.10.101:50114] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.


'LogLevel debug' debugの状態でlogを見ると、

[Sat Jun 06 11:04:25.664214 2020] [authz_core:debug] [pid 1567] mod_authz_core.c(820): [client 192.168.10.101:50387] AH01626: authorization result of Require all granted: granted
[Sat Jun 06 11:04:25.664259 2020] [authz_core:debug] [pid 1567] mod_authz_core.c(820): [client 192.168.10.101:50387] AH01626: authorization result of <RequireAny>: granted
[Sat Jun 06 11:04:25.664728 2020] [core:error] [pid 1567] [client 192.168.10.101:50387] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Sat Jun 06 11:04:25.664748 2020] [core:debug] [pid 1567] core.c(3833): [client 192.168.10.101:50387] AH00121: r->uri = /name/name/name/name/name/name/name/name/name/name/yama
[Sat Jun 06 11:04:25.664762 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/name/name/name/name/name/name/name/yama
[Sat Jun 06 11:04:25.664775 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/name/name/name/name/name/name/yama
[Sat Jun 06 11:04:25.664785 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/name/name/name/name/name/yama
[Sat Jun 06 11:04:25.664795 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/name/name/name/name/yama
[Sat Jun 06 11:04:25.664805 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/name/name/name/yama
[Sat Jun 06 11:04:25.664815 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/name/name/yama
[Sat Jun 06 11:04:25.664829 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/name/yama
[Sat Jun 06 11:04:25.664842 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/name/yama
[Sat Jun 06 11:04:25.664852 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /name/yama
[Sat Jun 06 11:04:25.664861 2020] [core:debug] [pid 1567] core.c(3840): [client 192.168.10.101:50387] AH00122: redirected from r->uri = /yama
[Sat Jun 06 11:04:25.728630 2020] [authz_core:debug] [pid 1569] mod_authz_core.c(820): [client 192.168.10.101:50388] AH01626: authorization result of Require all granted: granted, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.728671 2020] [authz_core:debug] [pid 1569] mod_authz_core.c(820): [client 192.168.10.101:50388] AH01626: authorization result of <RequireAny>: granted, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729116 2020] [core:error] [pid 1569] [client 192.168.10.101:50388] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729131 2020] [core:debug] [pid 1569] core.c(3833): [client 192.168.10.101:50388] AH00121: r->uri = /name/name/name/name/name/name/name/name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729141 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/name/name/name/name/name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729151 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/name/name/name/name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729161 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/name/name/name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729171 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/name/name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729180 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729190 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729199 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729208 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729218 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /name/favicon.ico, referer: http://192.168.10.200/yama
[Sat Jun 06 11:04:25.729227 2020] [core:debug] [pid 1569] core.c(3840): [client 192.168.10.101:50388] AH00122: redirected from r->uri = /favicon.ico, referer: http://192.168.10.200/yama


htaccessで

RewriteCond %{REQUEST_URL} !^/name/


このようにしているのに大量のエラーが発生していて name という文字をつけて繰り返しアクセスを試みていると思われます。(初心者なのでよくわかりませんが...)
htaccessがいけないのかapache2.confの設定がいけないのか分かりませんが、原因がわかる方に教えていただきたいです。

環境

サーバー:Debian Buster with Raspberry Pi Desktop (Oracle VM VirtualBox仮想環境)
apache:2.4.38(Debian)
php:7.3.14

apache2.confの一部です。

<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>

環境(詳細)

"ブラウザに表示されるURLが example.com/name/yamada/ となってしまう"というのは、あり得ない
と指摘されましたが、どうしても name が表示されてしまいます。
時間のある方は全く同じ環境を再現して頂きたいです。

・用意するもの

・手順
OSインストール完了までは省略します。
難しいことは書きません。以下をコピペで再現できると思います。

sudo apt-get update
sudo apt-get install apache2
sudo nano /etc/apache2/apache2.conf


編集

<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>


一番下に追記

LoadModule include_module modules/mod_include.so


Ctrl + O で上書き
Ctrl + X で閉じる

sudo cp -r /usr/lib/apache2/modules /etc/apache2/modules
sudo a2enmod rewrite
sudo service apache2 restart
cd /var/www/html
sudo mkdir name
cd name
sudo mkdir yamada
sudo nano index.html
<p>山田</p>


上書き&閉じる
------設定完了------
同じネットワーク内からブラウザで
http://[IPアドレス]/yamada
にアクセスしても
http://[IPアドレス]/name/yamada
になると思います。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • otn

    2020/06/03 23:14

    > こちらを参考にやってみましたがうまく動作しません。
    どうやったのでしょうか?

    キャンセル

  • CHERRY

    2020/06/04 12:54 編集

    エラーが出た場合は、ログファイルのエラーメッセージを確認しましょう。

    Apache Http Server に必要なモジュールを組み込んでない状態で設定するエラーになりますが、その状態でしょうか?

    キャンセル

回答 2

0

こんな感じかな。知らんけど。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/name/)
RewriteRule ^(.*)$ /name/$1 [R=301,L]

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URL} !^/name/
RewriteRule ^(.*)$ /name/$1


でしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/04 20:49

    試したこと③ に記入しましたがそちらのコードでは思い通りに動作しません。
    質問を編集したのでご覧いただけるとありがたいです。

    キャンセル

  • 2020/06/06 15:18

    > ① example.com/yamada/ にアクセス
    > → ブラウザに表示されるURLが example.com/name/yamada/ となってしまい
    は、あり得ないです。
    ・ブラウザキャッシュにゴミが残っている
    ・他にリダイレクト記述がある
    のどちらかでしょう。

    キャンセル

  • 2020/06/14 19:43

    返信が遅くなり申し訳ありません。


    キャッシュの削除は行っています。
    念のため、ほかのスマホやPCでもやってみましたが動作は変わりません。


    新たなサーバーに最低限の状態で構築してみました↓
    ・質問に記載したapache2.confを記述
    ・以下のコマンドの実行
    cd /etc/apache2/mods-available/
    sudo a2enmod rewrite
    sudo service apache2 restart
    ・htaccessの記述は①に記載した内容
    ・/var/www/html以下のディレクトリは
    index.html(初期ファイル)
    .htacess
    /name/
    /name/tanaka/index.html

    この状態でもnameが付いてしまいます。
    キャッシュが残っている可能性も考え、tanaka,yamada,yoshida など変えてみましたが同じ状況です。
    また存在しないファイル、フォルダー名をブラウザに入力するとInternal Server Errorになります。

    キャンセル

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

  • ただいまの回答率 88.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る