nginx:ディレクトリリストの長いファイル名

nginx:ディレクトリリストの長いファイル名

OpenBSD 5.4、64ビットでnginx / 1.4.1を使用する:

ここに画像の説明を入力してください。

ディレクトリリストを使用するときに完全なファイル名を表示するように(または少なくともファイル名にデフォルトのファイル名を表示するように)、nginxをどのように設定できますか?

Google検索では、次の情報のみを提供しました。

http://forum.nginx.org/read.php?2,124400,167420#msg-167420
January 18, 2011 08:36PM
fagtron
I looked all over the net and wasn't able to find this answer anyway, so I looked into the nginx source files and it's very easy.

Simply modify the file located at [b]src/http/modules/ngx_http_autoindex_module.c[/b] and then compile.

Change these lines:

[b]#define NGX_HTTP_AUTOINDEX_PREALLOCATE 50

#define NGX_HTTP_AUTOINDEX_NAME_LEN 50[/b]

to whatever you want, such as:

[b]#define NGX_HTTP_AUTOINDEX_PREALLOCATE 100

#define NGX_HTTP_AUTOINDEX_NAME_LEN 100[/b]

And then compile and restart nginx. That's it !!!

質問:では、再コンパイルする他の方法はありませんか?

答え1

fancyindex モジュールと fancyindex_name_length パラメーターを使用して、ファイル名の長さを構成できます。

答え2

~によるとngx_http_autoindex_moduleドキュメントでは、自動インデックスページの列幅設定は使用できません。ソースからコンパイルすることは、これらの変更を行う唯一の方法です。

代替方法は、スクリプト言語(例えば、、phpまたはrubypythonを使用してディレクトリリストを実行することです。

利点は次のとおりです。

  • CSS、JavaScriptなどで完全にカスタマイズ可能
  • ファイルリストを細かく制御

指示:

答え3

ソースからnginxをコンパイルする以外にこれを達成する方法がないようです。解決策:

次のスクリプトを使用して、現在のフォルダのフルパスを含むindex.htmlファイルを自動的に生成できます。

#!/bin/bash
# scriptname: /usr/local/sbin/directory-long-index.sh
# 
# the directory_root without slash at the end:
WEB=/var/www/
#reacheable url from inside the server:
URL=http://localhost

P=$(pwd|sed "s|$WEB/||")
echo "download $URL/$P/ to index.html"
curl "$URL/$P/" -o index.html
sed -i 's|href="\(.*\)".*</a>|style="display:inline-block;min-width:500px" href="\1">\1</a>|' index.html

フォルダ内で次を呼び出します。

source /usr/local/sbin/directory-long-index.sh

源泉:https://gist.github.com/rubo77/c7a9434eb104c00bf8772b2278284360


その他解決策最初から簡単なディレクトリのリストを作成します。

for i in *; do echo '<a href="'$i'">'$i'</a><br>'>>index.html; done

答え4

リンクのhrefにフルネームがあります。返された名前の代わりに一部のJavaScriptを使用してその名前を使用できます。

関連情報