web-dev-qa-db-ja.com

疑問符を含む最初のファイルから変換されたhtmlファイルがカタログをクリックするとブラウザに表示されないのはなぜですか?

ファイルsimple.7zをダウンロードしてsphinxにインストールし、ここで説明した問題を再現してください。再現するには、次のコマンドを実行します。

make clean
make html   

問題を再現するには、sphinxにダウンロードしてインストールしてください

sample/sourceには2つの記事があります。内容は同じですが、タイトルだけが異なります。

cd  sample
ls source |grep  "for-loop"
What does "_" in Python mean in a for-loop.rst
What does "_" in Python mean in a for-loop?.rst

1つは?を含み、もう1つは?を含みません。 make htmlの実行後に奇妙なことが起こりました。

make html
ls build/html|grep  "for-loop"
What does "_" in Python mean in a for-loop.html
What does "_" in Python mean in a for-loop?.html

please see the tile after running <code>make html</code> 問題1:
FirefoxがWhat does “_” in Python mean in a for-loop?と表示される理由:"_"“_”に統合されました。
?などのWhat does "_" in Python mean in a for-loop.htmlを含まないタイトルは、What does “_” in Python mean in a for-loop?にコンパイルされ、?が追加されますか?

問題2:最初のタイトルWhat does “_” in Python mean in a for-loop?をクリックするには、ブラウザがステータスno url was not found on this serverにジャンプします

no url was not found on this server when to click the first title 2番目のタイトルWhat does “_” in Python mean in a for-loop?をクリックすると、正常に動作します。 works fine when to click the second title

私の問題について説明してください。

14
scrapy

問題1は実際には問題ではなく、Sphinxの通常の動作です。表示されるタイトルはファイル名ではなく、ResTドキュメントの最上位のタイトルです、どちらの場合も疑問符で終わります。 目次を参照してください>.. toctree ::>エントリこのページ のセクション:

Toctree内のドキュメントのタイトルは、参照されるドキュメントのタイトルから自動的に読み取られます。

納得する必要がある場合は、ドキュメントのタイトルを変更し、HTMLを再構築して確認してください。


問題2は、リンクのhrefにURLエンコードされていない疑問符が含まれていることが原因です。 URLでは、疑問符は クエリ文字列 の開始を意味します。

これはWhat does "_" in Python mean in a for-loop?.htmlにアクセスしようとしています。つまり、What does "_" in Python mean in a for-loop HTMLドキュメントを要求し、.htmlパラメータを指定します。そして明らかに、要求されたドキュメントは存在しないため見つかりません。

ブラウザのアドレスバーで、疑問符をそのurlencoded形式%3Fに置き換え、それが機能することを確認できます。

リンクのhref実際にはバグと見なされます )またはResTドキュメントの命名制限を明確に表現しているドキュメントで、sphinxがドキュメント名を自動的にurlencodeする方法は見つかりませんでした。

しかし、私は経験から、句読点を使用してファイルに名前を付けることが問題の原因となることが多いことを知っていますエキゾチックな文字を少なくしてドキュメントの名前を変更することをお勧めします(それらを汚す)。 ResTドキュメントにunderscore_in_for_loop.rstではなくWhat does "_" in Python mean in a for-loop?.rstと名前を付けると、時間と頭痛の種を大幅に節約できます。

また、最初の問題で見たように、ドキュメント名はURLにのみ使用されるため、問題にはならないことを覚えておいてください。

6
Tryph

?ワイルドカード であり、URL内の一部の単語が一致するため、特殊文字として扱われます。

ワイルドカードは2種類のジョーカーで機能します。

  ? - any character  (one and only one)
  * - any characters (zero or more)

このためには、あなたは RLをエンコードする する必要があります

import urllib.parse
>>> urllib.parse.quote(<<url>>)

Python 3.xでは、urllib.parse.quoteをインポートする必要があります:

import urllib.parse
urllib.parse.quote(<<url>>)
4
Sreeram Nair