2014-02-25 64 views
0
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
RewriteRule files/name/(.*).(pdf)$/ download.php?file=$1.$2&tkn=token 
RewriteRule files/name/(.*).(pdf)$ download.php?file=$1.$2&tkn=token 
RewriteRule files/name2/(.*).(pdf)$/ download2.php?file=$1.$2&tkn=token 
RewriteRule files/name2/(.*).(pdf)$ download2.php?file=$1.$2&tkn=token 

文件夹名称和名称2包含相同的文件。 download.php和download2.php是相同的。.htaccess重写似乎在更长的字符串上失败

文件/名称/(.*)重写规则将几乎所有文件重定向到download.php,但失败,似乎是长文件名。两个文件我知道它已经失败的是:

ABCDEFGHIJKLMN-abcdefghij.pdf

Pbcdefg AB ABC Abdefghij 2.PDF

的文件/文件名2 /(.*)规则捕获所有文件,包括两个在第一条规则中失败。从字面上看,如果我去http://www.domain.com/files/names/abcdefghijklmn-abcdefghij.pdf,服务器将直接为我提供文件。如果我去http://www.domain.com/files/names2/abcdefghijklmn-abcdefghij.pdf,(只需加2名),服务器将我重定向到http://www.domain.com/download2.php?file=abcdefghijklmn-abcdefghij.pdf&tkn=token

我一直试图让这几个小时的工作,我不知道为什么第一个规则将不会工作。有一些奇怪的特质我错过了吗?

+0

我假设这些将是PDF文件? –

+0

是的,这些是PDF文件。 –

回答

0

试试这种方式,看看它是如何工作的。

RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
RewriteRule files/name2/(.*)\.pdf$ /download2.php?file=$1.pdf&tkn=token [R,L] 
RewriteRule files/name/(.*)\.pdf$ /download.php?file=$1.pdf&tkn=token [R,L] 
+0

试过这个,它重定向到: http://www.domain.com/home/user/public_html/download.php?file=testfile.pdf&tkn=token 它添加了根路径的原因是什么? –

+0

偶然有Godaddy吗?无论如何,请尝试像更新一样在前面的download.php和download2.php中添加一个斜杠。 –