我有一点问题。我的一位客户最近向6500人发送了一封电子邮件,其中包含指向PDF文件的无效链接。
链接只是: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 :(得分:2)
由于这是.htaccess,因此在匹配规则的开头不应该有强制性正斜杠。试试这个:
RewriteEngine On
RewriteRule ^/?pdf/thepdf\.pdf\s+$ /pdf/thepdf.pdf [R=301,L]
注意:
/?
,因为这是一个很好的通用做法,可以使规则在主机配置上下文或.htaccess上下文中工作。如果此规则在主机配置中,则需要/
。.
之前转义.pdf
,否则它将作为通配符匹配。^
和$
),以确保匹配整个资源字符串答案 1 :(得分:0)
%20
是一个网址编码空间,因此您可以在(.+?)
文件中使用延迟选择.htaccess
。
RewriteEngine On
RewriteBase /
RewriteRule /pdf/thepdf.pdf(.+?) /pdf/thepdf.pdf [L]
这些规则通常应该有效。