Назад | Перейти на главную страницу

Пользовательские страницы автоиндекса с nginx

Есть ли способ определить свои собственные страницы автоиндекса в nginx?

Я хочу добавить свой собственный HTML и CSS к сгенерированным страницам автоиндекса.

Используя XSLT, можно настроить вывод xml автоиндекса с помощью xslt модуль:

location / {
    autoindex on;
    autoindex_format xml;
    xslt_stylesheet /path/to/custom.xslt
}

Вот что я сделал в этом проекте: ngx-superbindex

Тот же ответ, что и гибатроник: используйте мощь xslt! Взгляните на этот образец файла xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <html>
    <body>
        <h3>Dafshabbat</h3>
        <table border="0">
        <tr bgcolor="#9acd32">
            <th>name</th>
            <th>size</th>
            <th>date</th>
        </tr>
        <xsl:for-each select="list/*">
        <xsl:sort select="@mtime"/>

            <xsl:variable name="name">
                <xsl:value-of select="."/>
            </xsl:variable>
            <xsl:variable name="size">
                <xsl:if test="string-length(@size) &gt; 0">
                        <xsl:if test="number(@size) &gt; 0">
                            <xsl:choose>
                                    <xsl:when test="round(@size div 1024) &lt; 1"><xsl:value-of select="@size" /></xsl:when>
                                    <xsl:when test="round(@size div 1048576) &lt; 1"><xsl:value-of select="format-number((@size div 1024), '0.0')" />K</xsl:when>
                                    <xsl:otherwise><xsl:value-of select="format-number((@size div 1048576), '0.00')" />M</xsl:otherwise>
                            </xsl:choose>
                        </xsl:if>
                </xsl:if>
            </xsl:variable>
            <xsl:variable name="date">
                <xsl:value-of select="substring(@mtime,9,2)"/>-<xsl:value-of select="substring(@mtime,6,2)"/>-<xsl:value-of select="substring(@mtime,1,4)"/><xsl:text> </xsl:text>
                <xsl:value-of select="substring(@mtime,12,2)"/>:<xsl:value-of select="substring(@mtime,15,2)"/>:<xsl:value-of select="substring(@mtime,18,2)"/>
            </xsl:variable>

        <tr>
            <td><a href="{$name}"><xsl:value-of select="."/></a></td>
            <td align="right"><xsl:value-of select="$size"/></td>
            <td><xsl:value-of select="$date"/></td>
        </tr>

        </xsl:for-each>
        </table>
    </body>
    </html>
    </xsl:template>
</xsl:stylesheet>

Что мне особенно нравится, так это возможность сортировки по дате, которая определяется здесь с помощью: <xsl:sort select="@mtime"/>

Это, безусловно, требует больше усилий для настройки по сравнению с добавлением пары директив в файл .htaccess. И, xml-файлы неудобно писать и читать. Тем не менее, потенциал настройки велик, и очень приятно иметь!

См. Вводное руководство по w3schools.

оказывается, вы можете добавить действительный html с помощью модуль добавления http.

я не утверждаю, что понимаю это полностью, но есть репозиторий, который именно то, что ты хочешь, так что вы можете попробовать продолжить работу оттуда.

Изменить (2019):

После изучения это на самом деле довольно простая задача.

  • создать скрытую папку, например .assets, поэтому автоиндекс не отобразит его.
  • внутри него создайте html-файл, содержащий все, что вы хотите добавить на свою веб-страницу.
  • тогда просто добавьте add_after_body /.assets/my_html_file.html к вашим правилам nginx. та-да!

Обратите внимание, что согласно документации этот модуль не является частью компиляции по умолчанию. Я обнаружил, что он есть в пакете nginx на ubuntu.

Существование Необычный указатель модуль предполагает, что встроенный модуль автоиндекса не имеет возможности настройки. Я не уверен, что порекомендовал бы мне модный индексный модуль - он не выглядит особенно актуальным (последний раз редактировалось в 2007 году ...)

Вы также можете попробовать h5ai:

http://larsjung.de/h5ai/

Они предоставляют действительно хороший интерфейс для просмотра файлов.