我有一个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]
我关闭了吗?
答案 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
,同时保留非空格文件名。