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

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

ただいまの
回答率

89.12%

トレイリングスラッシュ(Trailing Slash)がない時にページ表示されない

解決済

回答 2

投稿 編集

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

YYmd0525

score 9

AWSにてサイトの構築の練習をしております。
1つのドメインで複数のLaravelファイルを作りたく、サブディレクトリでLaravelを動かしているのですが

https://yydec5.com/laravel/
こちらだと動くのですが、

https://yydec5.com/laravel
こちらだと動きません。

laravelの.htaccessの問題かな?と思ったので、
/var/www/htmlにもう1つディレクトリを作り、index.htmlのみを配置しました。

https://yydec5.com/test/
とし、こちらは動きましたが

https://yydec5.com/test
こちらは動きませんでした。

ということは、Apacheの問題かな?と思い、httpd.confを

ServerRoot "/etc/httpd"


Listen 80


Include conf.modules.d/*.conf


User apache
Group apache


ServerAdmin root@localhost


ServerName yydec5.com:80


<Directory />
    AllowOverride none
    Require all denied
</Directory>


DocumentRoot "/var/www/html"


<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

<Directory "/var/www/html">

    Options FollowSymLinks

    AllowOverride All

    Require all granted
</Directory>


<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>


<Files ".ht*">
    Require all denied
</Files>


ErrorLog "logs/error_log"


LogLevel warn

<IfModule log_config_module>

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>


<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>

    TypesConfig /etc/mime.types


    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz


    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>


AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>


EnableSendfile on

# Supplemental configuration
#Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

TraceEnable off
Header append X-FRAME-OPTIONS "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
FileETag None
Header unset X-Powered-By
ServerTokens ProductOnly
ServerSignature off

RewriteEngine on
RewriteRule ^(.*/[^./]+)$ $1/ [R=301,L]

https://blanktar.jp/blog/2014/01/apache-path-last-slash

こちらを参考に、

RewriteEngine on
RewriteRule ^(.*/[^./]+)$ $1/ [R=301,L]

をつけたり、/var/www/htmlに.htaccessを作り、

以前の質問であったように(https://teratail.com/questions/82171

RewriteEngine on
RewriteRule (.*)/$ $1 [R,L]

こちらをしてもダメでした。

DirectorySlash Off

それと、httpd.confに以上の記述があるとトレイリングスラッシュの自動補完がされないということで調べましたが、こちらもなく。

何か解決法があれば教えていただきたいです。
よろしくお願いします。

バージョン情報
Server version: Apache/2.4.6 (CentOS)
Laravel Framework 5.7.29

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

check解決した方法

0

最善な解決方法かわかりませんが、やりたい事はできたので投稿します。

まず、ALBのセキュリティグループを今までHTTPSのみを許可してましたが、HTTPの80番ポートを許可しました。
これによりhttpでも表示されるようになりました。

https://example.com/hogeはhttp://example.com/hoge/へリダイレクトされ、表示されます。

そして、このhttpをhttpsにリダイレクトしたいので.htaccessを/var/www/htmlに置きます。

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)?$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=301]

以上の設定で解決しました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

URLを参照できてしまったのでアクセスしたのですが、https://yydec5.com/laravel にアクセスすると http://yydec5.com/laravel/ にリダイレクトされるような動きに感じました

また、http://yydec5.com/laravel/は「このサイトにアクセスできません」となっています

リダイレクト処理を確認してみてください

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/06/27 22:41

    ご回答ありがとうございます。
    まさしくその通りで、requestはhttpsですが、responseがhttpになっています。
    その後httpd.confをいろいろいじりましたが、、解決せず。

    ・Aliasを追記する(https://teratail.com/questions/173144)→今回は/laravel/を追加してみた
    ・httpをhttpsにリダイレクト設定(https://gist.github.com/koudaiii/8cb8e6a4f6daf180e0e5)→無限ループ

    もう少しヒントいただければ幸いです。

    キャンセル

  • 2020/06/28 02:05

    httpd.conf で Listen 80 しか記載されてないので 443 を処理しているファイルが別にありそうです

    キャンセル

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

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