2023年2月26日日曜日

HPでソースコードのファイルをクリックして表示

 ホームページディレクトリを作成

その中にソースファイルを複数おいて、クリックして閲覧できるようにする。


HPでは、フォルダにindex.htmlが無いとフォルダのファイル一覧を表示します。

今回は、一覧を見やすく事と、正しくエンコードされて見れることに挑戦しましたよ!


通常は次のように表示されます

Index of ~とか、最後のApache/2.4.7~はいらないし
ParentDirectoryに戻るは、危ないしと色々表示してほしくないものがあります。
ので、それを改善します。









それを次のような表示に改善します!!!










ファルダに「.htaccess」を作成してカスタマイズするとかなり便利なことが判明しました。

設定したファイル内容

removeHandler cgi-script .cgi .pl .py .rb

IndexIgnore .. __* *.html *.txt

HeaderName  ./autoindex_head.html

ReadmeName  ./autoindex_end.txt

IndexOptions SuppressHTMLPreamble

#IndexOptions FancyIndexing HTMLTable

IndexOptions FancyIndexing

IndexOptions NameWidth=*


autoindex_head.html

<html>

<head>

  <title>abcdefg</title>

</head>

<body>

<h1>ファイル一覧</h1>

<p>ファイル内容の表示は、

ファイルをクリックして下さい

</p>

<script></script>


autoindex__end.txt
2023/02 更新



フォルダの内容は次のような感じで、HPで「src」をクリックすると「src」フォルダにはindex.htmlがないのでファイル一覧をApacheは表示してくれますね





.htaccessに次の設定を書くだけでも問題はないけね

このフォルダの上位「/book以下」では、CGIが起動できる設定にしまったので

最初の一行「removeHandler 」は必要になってしまいました。

removeHandler cgi-script .cgi .pl .py .rb

AddCharset UTF-8           .py

IndexIgnore .. __* *.html *.txt




mydbg.pyをクリックすると文字化しなく表示されました






ubuntu CGI でエラーの対応(UnicodeEncodeError:ascii' codec can't encode character)


次のソースコード(UTF-8で保存済み)でエラー発生

#!/usr/bin/python3

print("Content-Type: text/html; charset=utf-8\n")

print("あ")

 

 Traceback (most recent call last):

File "/var/www/~ loginMain2.py", line 68, in <module>

     print("\\u3042")

UnicodeEncodeError: 'ascii' codec can't encode character '\\u3042' in position 0: ordinal not in range(128)



修正方法

# micro   /etc/apache2/apache2.conf


環境変数「LC_CTYPE 」をUTF-8にします。

<Directory /var/www/>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

        SetEnv LC_CTYPE C.UTF-8

</Directory>



解決策まとめ

/etc/apache2/apache2.confファイルに、
SetEnv LC_CTYPE C.UTF-8
を追加します

ubuntu起動方法 version( /etc/issue), service apache2 start

# cat /etc/issue

Ubuntu 14.04.6 LTS

 

# service apache2 stop

 * Stopping web server apache2                                                                                                                                                                                                      

# service apache2 start

 * Starting web server apache2