質問
-
スタンダード
サイトが正常に表示されなくなりました -
本文:
お世話になります。
最近、自分が運営しているサイト http://www.philosophers-today.com/
が正常に表示されなくなっていることに気付きました。
特に何もいじっていません。
不具合が発生したのは旧ミニバードからスターサーバーに統合された時期です。
phpを使用しています。HTMLのソースがそのまま表示されてしまっている状況です。
.htaccessが原因かと思い、.htaccessに
AddHandler fcgid-script .php .phps .html
とだけ記述すると今度は文字化けしてしまいました。
どうすれば元に戻せるのかわかりません。
文字コードはshift_jisです。
現在の.htaccessの記述です。
Options -Indexes
<Files ~ "\.(dat|log|csv)$">
deny from all
</Files>
<Files ~ "^\.ht">
deny from all
</Files>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(philosophers-today\.com)(:80)? [NC]
RewriteRule ^(.*) http://www.philosophers-today.com/$1 [R=301,L]
order deny,allow
AddType x-httpd-php .html
#####fastcgi#####
#AddHandler fcgid-script .php .phps
#FCGIWrapper "/home/philosophers/philosophers-today.com/php/php-cgi" .php
#FCGIWrapper "/home/philosophers/philosophers-today.com/php/php-cgi" .phps
#####end:fastcgi##### - 緊急度:緊急投稿者:表示名ニックネームさん投稿時間:2019/04/27 22:54
回答 No.8947
-
本文:
Mozilla Firefox では読めます。ソースコードを見ると、 PHP のコードが生で載っているので、たしかにおかしいです。
Google Chrome ではたしかに読めませんね。
文字化けするのは、
・Shift_JIS を使用しており
・HTML 内に文字コードセットの指定がないからで、
・Google Chrome ではエンコードの選択機能がないので適切なものを選べない
からです。
(もしかすると PHP 部分で文字コードセットが指定してあったのかもしれませんが、いまは読めないので。)
最良なのは、 Shift_JIS をやめて UTF-8 につくりかえることです。
> AddHandler fcgid-script .php .phps .html
*.html のファイルに PHP コードを書いているのであれば、必要です。
(それよりも本当は、 .html と .php をそもそも住み分けたほうが良いですが。つまり .html では PHP を書かないほうが、良いですが。)
> AddType x-httpd-php .html
この設定はもう外しましょう。
- 投稿者:ayaguchiさん 投稿時間:2019/04/27 23:10
質問者からのコメント
ご回答ありがとうございます。
.htaccessの
AddType x-httpd-php .html を外して、
AddHandler fcgid-script .php .phps .html を追加しました。
以下の記述がありますが、これでは文字コードセットの指定にならないのでしょうか。
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
まだ文字化けが直りません。
Shift_JIS をやめて UTF-8 につくりかえるしか解決策はないでしょうか。
回答 No.8949
-
本文:
>不具合が発生したのは旧ミニバードからスターサーバーに統合された時期です。
ミニバードとスターサーバーではサーバーの規格が違うので、そのままでは動かないこともあるために事前に告知が出ていたのではないかと思います。
https://www.netowl.jp/starserver/#information
ここに「主な仕様差異の一覧」が載っています。
該当ページは、IE11だと一応表示されますが全面文字化けしています。
エンコードはUTF-8をブラウザが選択しています。
PHP環境(php.ini)設定
https://www.star.ne.jp/manual/homepage_phpini.php
>php.iniの主要な項目の初期値
>default_charset UTF-8
>mbstring.internal_encoding UTF-8
このあたりの設定をとりあえず確認すればひょっとしたら直るかもしれませんけど、Chromeだとソースが丸ごと表示されているので大半のブラウザではダメなんじゃないのかなと思います。
https://www.minibird.jp/man/homepage_phpini.php
ミニバードでも2017年3月から初期値はUTF-8になっていたようです。
cycle.phpは
<html>
<head>
これだけしかないようです。
文字コードが書かれずにhtmlで始まるためUFT-8と大半のブラウザは判断しているのではないでしょうか。
閉じタグが読み込まれないのでChromeでは全部ソース表示になっているように思います。
またhomeside.phpの中身は.cssで書いても全く問題がないように見えるんですけどphpにする必要性があるのでしょうか。
line-height: 120%;を指定しているだけですよね。
3月下旬のiOS12.2以降、SafariではHTTPSになっていないサイト全てに警告表示が出るようになりました。
https://did2memo.net/2019/04/07/iphone-ios-12-anzen-deha-arimasen/
理屈がわかっている人はサイトによっては気にしないと思いますが、大半の分かっていない人はその表示が出るのはサイトが怪しいからだと思っているようなので、できればHTTPSにもしたほうがいいと思います。
外部から呼び込むものも全てhttpsで始まるようにしないといけませんので、サイトを作り直す場合にはその点も考慮したほうがいいように思います。 - 投稿者:kashaさん 投稿時間:2019/04/28 00:16
質問者からのコメント
<?php
header("Content-Type: text/html; charset=Shift-JIS");
?>
を記述することで解決しました。
早急なご回答どうもありがとうございました。助かりました。
サイトの需要がありそうな場合作り直しも検討してみます。
その際はHTTPSにします。
回答 No.8948
この回答がベストアンサーです
Webサーバが
Content-Type: text/html; charset=UTF-8
という HTTP ヘッダを返しているので、
HTTP ヘッダでも shift_jis になるよう、PHP のコードでもヘッダを指定してやる必要がありそうです。
https://www.php.net/manual/ja/function.header.php
https://qiita.com/calcabrina/items/95a3201e3612d97a91e9
質問者からのコメント
<?php
header("Content-Type: text/html; charset=Shift-JIS");
?>
を記述することで解決しました。
早急なご回答どうもありがとうございました。助かりました。