.htaccessでURLをhttpsに1本化したときURL最後が//になる

バグかなと思ったらこちらへ。

.htaccessでURLをhttpsに1本化したときURL最後が//になる

投稿記事by kamo on 2017年12月29日(金) 05:49

いつも開発ありがとうございます。kamoです。

3.0.系のSOY CMS SQLiteのXサーバー環境において
ルートのCMS側から設定時に書き出される.htaccesに最初から

# 常にhttpsでアクセスさせる(httpでのアクセスをhttpsにリダイレクトする)
#RewriteCond %{HTTPS} =off
#RewriteRule ^(.*)$ https://%{HTTP_HOST}/%{REQUEST_URI} [R=301,L,QSA]
-------------
記載部分があったので2行のコメントをとって表示をみたら
転送はできたのですが
httpsへ転送設定するとドメインの表示がhttps://独自ドメイン// となり
トップはみえていますがURL最後が「//」となってしまいました。

記述を以下に変え確認
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
-----
結果は同じで最後に「//」と
2つスラッシュが表示されます。

他のサイトの1.8系ではXサーバーSSL設定では
特別このような表示にはなりません。

どこを直せばよいかお教えいただけませんでしょうか。
kamo
 
記事: 108
登録日時: 2009年3月25日(水) 15:44

Re: .htaccessでURLをhttpsに1本化したときURL最後が//になる

投稿記事by inunosinsi on 2017年12月29日(金) 06:27

コード: 全て選択
# @generated by SOY CMS at 2017-12-12 20:08:32
RewriteEngine on

#追加
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.htm !-f
RewriteCond %{REQUEST_URI} !^/server-status
RewriteCond %{REQUEST_URI} !^/server-info
RewriteCond %{REQUEST_URI} !^/index.php/
RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L]
#---SOY CMS end of htaccess file --


普段は上記のような書き方をしているのですが、これで如何でしょうか?

.htaccessには疎いのでよくわかりませんが、
コード: 全て選択
RewriteCond %{HTTPS} =off

こちらの=offと

コード: 全て選択
RewriteCond %{HTTPS} !on

こちらの書き方は大丈夫でしたっけ?
SOY CMSの操作に関する質問は下記のページのフォームで受け付けています。
https://saitodev.co/soycms/inquiry

京都でフリーのプログラマをしています。
SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 574
登録日時: 2008年6月12日(木) 20:48

Re: .htaccessでURLをhttpsに1本化したときURL最後が//になる

投稿記事by kamo on 2017年12月29日(金) 06:39

いつも、ありがとうございます、kamoです。

inunosinsi 様
以下の方法で問題解決しました。
記事のフロントコンロトーラの方
https://goo.gl/rJpS5y
------------
フロントコントローラでの対応
サイトのルート設定をしている場合のみ対応可能で

/ルート/index.phpを開き、
<?phpの下に下記のコードを追加

if(!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] !== "on"){
header("location:" . "https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
exit;
}
-------------------------------
ありがとうございました。
お手を煩わせ申し訳ございませんでした。
kamo
 
記事: 108
登録日時: 2009年3月25日(水) 15:44

Re: .htaccessでURLをhttpsに1本化したときURL最後が//になる

投稿記事by kamo on 2017年12月29日(金) 11:01

kamoです。追加報告です。

/ルート/index.phpの変更をせずに
.htaccessの方でも
-------------------------
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://this-domain.com/$1 [R=301,L]
-----------------
のようにRewriteRule に
直接ドメインを記載したらhttpsでURLが「//」とならずに表示できました。
ありがとうございました。
お手を煩わせ申し訳ございませんでした。
kamo
 
記事: 108
登録日時: 2009年3月25日(水) 15:44


Return to バグ報告

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[5人]