0

我正在处理这样一种情况,有人将服务器上的一堆旧文件交给了我,这些文件已经有很多直接指向它们的传入链接(主要是 pdf 文件)。我现在整理了文件,但在不同的目录中。之前是“域/手册/文件”,现在是“域/媒体/手册/文件”。我正在尝试使用 htaccess 文件解决此问题。

许多文件的名称中都有空格(不是我可以控制的),因为它们已经有指向它们的链接,所以我不能只是重命名它们。我发现当文件名中有空格时,我可以单独重定向文件,方法是使用引号,例如:

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

但是,有很多这些文件,我想知道是否有一种方法可以创建一个正则表达式来处理文件名中的空格,我可以用它来重定向整个目录。我应该补充一点,有些文件包含没有空格的体面的文件名,有些有一个空格,而另一些则不止一个空格。这不漂亮。

如果您在我真的很高兴听到您的建议之前遇到过这个问题,那么我的想法已经不多了。

谢谢。

4

3 回答 3

1

关于什么:

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

(.*)匹配 URL 中的任何字符/manuals/

注意Redirect并且RedirectMatch是 的一部分mod_alias,而不是mod_rewrite(因为已标记问题)所以请原谅mod_rewrite我之前发布的规则。

于 2010-04-12T13:21:45.447 回答
0

如果您需要 URL 中的空格字符,您可以使用%20which 是空格的 URL 编码。

于 2010-04-12T13:22:20.977 回答
0

重定向可以一次对整个目录起作用。

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

然后您不必担心将空格转义到%20或任何其他字符。Apache 会将该路径下的每个文件重定向到目标 URL 下的同一文件。

RedirectMatch对于正则表达式匹配也存在;不过,您不需要为此求助。)

于 2010-04-12T13:23:30.360 回答