1

我有一个 php 网站,docs根目录下有一个文件夹,该网站的结构如下:

sitename.com/docs/

在 docs 文件夹中是 PDF,有时会因为名称中的空格而导致浏览器问题,因此找不到它们(主要是 IE)。

我想做的是以下几点:

每当目录中有损坏的 URL 时docs/,我想将整个查询字符串重定向到 docs 目录中的 php 页面,但它必须保持 PDF 的名称完整。

因此,URL 是:

website.com/docs/this is a pdf

我希望它重定向到:

website.com/docs/index.php?pdf=this is a pdf

从那里,我可以获取 PDFparam并修复它并将请求发送到正确的文件。

这不是直接完成的原因是.htaccess我找不到动态的解决方案,换句话说,PDF 中的字数是可变的,可能是 1 到 20 个字,以空格分隔。

我在这个 SO 帖子上发表了一篇关于此的帖子,确实得到了回复,但是,它仍然没有解决可变 URL 长度问题。

我从本教程中的示例再次尝试了这个,但这对我没有帮助,因为我无法理解如何正确地做到这一点。

我认为接近的一件事是以下代码:

RewriteEngine on
RewriteRule ^docs/(.*) /index.php?pdf=$1 [NC]

我接近了吗?

4

2 回答 2

2

首先您应该知道,.htaccess 中只能编写静态代码,我们无法处理为动态代码,
以下解决方案可能对您有所帮助,未经测试

RewriteEngine on
RewriteRule ^docs/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?pdf=$1 [L]

于 2013-08-27T11:29:08.950 回答
0

有这样的规则:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^docs/((?=[^\s]*\s).+?)/?$ /docs/index.php?pdf=$1 [NC,L,B,QSA]

这会将所有带有空格的 PDF 转发到,/docs/index.php同时保持非空格文件名不变。

于 2013-08-27T11:25:47.860 回答