.htaccess用于PDF URL

时间:2012-02-02 00:02:46

标签: php apache .htaccess mod-rewrite lamp

我有一个名为/pdf/的结构,其中存储了生成的PDF。我正在尝试使用.htaccess将访问者路由到PDF文件夹。

我的.htaccess文件中有这条规则:

RewriteEngine On
RewriteBase /
RewriteRule (.*) index.php?page=$1.html
RewriteRule ??? for pdf??

(注意???标记......)

当我尝试访问网址/manual_chap_1时,它正在运行。但是,当我尝试/pdf/manual_chap_1时,它似乎并没有起作用。以下是我看到的一些输出:

$_GET[page] => index.php.html

如果PDF文件在请求的位置不存在,我希望能够生成PDF文件,然后,我希望它能够加载HTML页面。

1 个答案:

答案 0 :(得分:12)

欢迎使用StackOverFlow,试试这个:

RewriteEngine On
RewriteBase /

RewriteRule ^pdf/([a-z0-9\-_\.]+)$ pdf.php?file=$1 [L,NC,QSA]

RewriteCond %{REQUEST_URI} !^/pdf
RewriteRule ^([a-z0-9\-_\.]+)/?$ index.php?page=$1.html [L,NC,QSA]

L: [L]标志使mod_rewrite停止处理规则集。在大多数情况下,这意味着如果规则匹配,则不会处理其他规则。这对应于Perl中的最后一个命令,或C中的break命令。使用此标志指示应立即应用当前规则而不考虑进一步的规则。

QSA:当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致组合查询字符串。

NC:使用[NC]标志会使RewriteRule以不区分大小写的方式匹配。也就是说,它不关心字母在匹配的URI中是以大写形式还是小写形式出现。

另外,我建议使用破折号而不是下划线。