0

私は、誰かがサーバー上にたくさんの古いファイルを渡してきた状況に対処しています。これらのファイルには、それらへの直接の着信リンクがたくさんあります (主に pdf ファイル)。ファイルは整理されていますが、別のディレクトリにあります。以前は「ドメイン/マニュアル/ファイル」でしたが、現在は「ドメイン/メディア/マニュアル/ファイル」です。htaccess ファイルを使用してこの問題を解決しようとしています。

ファイルの多くには名前にスペースが含まれており (私が制御できるものではありません)、ファイルへのリンクが既にあるため、名前を変更することはできません。次のような引用符を使用して、名前にスペースが含まれているファイルを個別にリダイレクトできることがわかりました。

redirect 301 "/manuals/file 123.pdf" "http://www.domain.com/manuals/file 123.pdf"

ただし、これらのファイルが大量にあるため、ディレクトリ全体をリダイレクトするために使用できるファイル名のスペースを処理する正規表現を作成する方法があるかどうか疑問に思いました。一部のファイルにはスペースのないまともなファイル名が含まれていること、一部のファイルにはスペースが 1 つ、その他のファイルには複数のスペースが含まれていることを付け加えておきます。それはきれいではありません。

あなたのアドバイスを聞いて本当に感謝する前にこの問題に遭遇したことがあるなら、私はアイデアが不足しています.

ありがとう。

4

3 に答える 3

1

どうですか:

RedirectMatch permanent ^/manuals/(.*)$ http://www.domain.com/media/manual/$1

URLに続くすべての(.*)文字に一致/manuals/します。

RedirectRedirectMatchはの一部でありmod_alias、 (質問にタグが付けられているため)ではないので、私が投稿した以前のルールをmod_rewrite許してください。mod_rewrite

于 2010-04-12T13:21:45.447 に答える
0

リダイレクトは、ディレクトリ全体を一度に処理できます。

Redirect permanent /manuals/ http://www.domain.com/manuals/

%20そうすれば、スペースやその他の文字をエスケープすることを心配する必要はありません。Apacheは、そのパスの下にあるすべてのファイルを、リンク先URLの下にある同じファイルにリダイレクトします。

RedirectMatch正規表現のマッチングにも存在します。ただし、これに頼る必要はありません。)

于 2010-04-12T13:23:30.360 に答える
0

URLのスペースに文字が必要な場合は%20、スペースのURLエンコードであるを使用できます。

于 2010-04-12T13:22:20.977 に答える