Apache AutoIndex和Python PEP 503

时间:2019-03-10 20:14:13

标签: python apache mod-autoindex

我正在尝试基于these instructions建立一个简单的Python存储库。

我已经创建了所需的目录结构,但是pip将找不到任何版本。在深入研究主题并参考PEP 503 - Simple Repository API之后,我发现自动生成的HTML网站的结构应为:

<!DOCTYPE html>
<html>
  <body>
    <a href="/frob/">frob</a>
    <a href="/spamspamspam/">spamspamspam</a>
  </body>
</html>

同一个PEP也说:

  

锚标记的文本必须是项目的规范化名称   并且href属性必须链接到该特定网址   项目。

在我看来,是这样的:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>Index of /</title>
 </head>
 <body>
<h1>Index of /</h1>
<ul><li><a href="packet_name/"> packet_name/</a></li>
</ul>
</body></html>

请注意<a>标记的开头为空白,斜杠为末尾。是

<a href="packet_name/"> packet_name/</a>

但应为

<a href="packet_name/">packet_name</a>

.htaccess文件当前如下所示:

Options +Indexes
IndexOptions SuppressColumnSorting -FancyIndexing
IndexIgnore ..

有没有一种方法可以指示Apache按照PEP 503的要求提供目录布局?

1 个答案:

答案 0 :(得分:1)

结果表明,问题出在的不是链接的格式,而是归一化的文件夹结构。 PEP 503希望对根级别的文件夹进行规范化。考虑该项目的名称为foo_bar。然后,目录布局必须为:

.
|- foo-bar
|-- foo_bar-0.1.tar.gz

请注意,通过将., -, or _字符替换为单个-来使文件夹“规范化”。然后,.htaccess文件和自动生成的索引就可以正常工作。

这是PEP 503的相关部分:

  PEP是指“标准化”项目名称的概念。按照   PEP 426名称中唯一有效的字符是ASCII字母,   ASCII数字。,-和_。名称应全部小写   字符。,-或_的运行用单个字符替换。   这可以使用re模块在Python中实现: