.htaccess重定向断开链接到php页面,参数完整

时间:2013-08-27 11:12:11

标签: php .htaccess

我有一个php网站,根目录中有一个docs文件夹,因此该网站的结构是:

sitename.com/docs/

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

我想做的是以下内容:

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

因此,URL是:

website.com/docs/this is a pdf

我希望它重定向到:

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

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

直接.htaccess没有这样做的原因是我找不到动态的解决方案,换句话说,PDF中的单词数量是可变的,可以是1到20个单词,分开按空格。

我在this SO post发布了一条关于该问题的帖子,但确实收到了一条回复,但仍未解决可变网址长度问题。

我再次尝试this tutorial中的例子,但这对我没有任何帮助,因为我无法理解如何正确地做到这一点。

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

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

我关闭了吗?

2 个答案:

答案 0 :(得分:2)

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

RewriteEngine on {
{1}}

答案 1 :(得分: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,同时保留非空格文件名。