2013-05-21 27 views
0

我有一个小问题。我的一位客户最近向6500人发送了一封电子邮件,其中包括与PDF文件无效的链接。.htaccess重写规则可能性?

的联系很干脆:http://theirsite.com/pdf/thepdf.pdf%20

所以,我希望能为他们做一个htaccess重写有效http://theirsite.com/pdf/thepdf.pdf文件

到目前为止,一切我试过不行。

以下是我迄今为止尝试:

RewriteRule ^(/pdf/thepdf.pdf[%20|\s]+)$ /pdf/thepdf.pdf [R=301,L] 

RewriteRule /pdf/thepdf.pdf([%20|\s]+)$ /pdf/thepdf.pdf [R=301,L] 

RewriteRule /pdf/thepdf.pdf%20 /pdf/thepdf.pdf [R=301,L] 

RewriteRule /pdf/thepdf.pdf%20 /pdf/thepdf.pdf [R=301,L] 
RewriteRule /pdf/thepdf.pdf /pdf/thepdf.pdf [R=301,L] 

RewriteRule /pdf/thepdf.pdf(.+?) /pdf/thepdf.pdf [R=301,L] 

一些需要注意的地方,如果我点击原文链接,但去掉20%,放在一个空间,重写工作。

只是不与%20

+0

阿帕奇应注意在网址的结尾清洗白色空间。你有什么错误之王?一个404? –

+0

是的,404错误。 Apache没有照顾它,不,我无法控制服务器,也不能控制Apache。大声笑我很幸运,让他们允许一个.htaccess文件 – Kevin

回答

2

由于这是.htaccess,所以在匹配规则的开头不应该有强制的正斜杠。试试这个:

RewriteEngine On 
RewriteRule ^/?pdf/thepdf\.pdf\s+$ /pdf/thepdf.pdf [R=301,L] 

注:

  • 我把/?在比赛规则的开始,因为这是很好的一般做法,使在任何一台主机配置上下文或一个.htaccess规则工作上下文。因为如果此规则在主机配置中,则需要/
  • 您应该在.pdf之前转义.,否则它将作为通配符匹配。
  • 我在开始时加入锚(^$)和本场比赛的结束,以确保这整个资源字符串匹配
+0

hot diggity!这工作':)'谢谢! – Kevin

0

%20工作是一个URL编码的空间,这样你就可以在你的.htaccess文件使用一个懒惰的选择(.+?)

RewriteEngine On 
RewriteBase/
RewriteRule /pdf/thepdf.pdf(.+?) /pdf/thepdf.pdf [L] 

这些规则通常应该工作。

+0

我会这么认为,但它没有奏效。相同的404错误 – Kevin

+0

是的,我已经验证了重写mod已启用,因为它正在为一些其他链接(正确链接) – Kevin