.htaccess 用于 PDF URL

问题描述 投票:0回答:1

我有一个名为

/pdf/
的结构,用于存储生成的 PDF。我正在尝试使用 .htaccess 将访问者路由到 PDF 文件夹。

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

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

(注意

???
标记...)

当我尝试访问 url

/manual_chap_1
时,它正在工作。但当我尝试
/pdf/manual_chap_1
时,它似乎不起作用。这是我看到的一些输出:

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

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

php apache .htaccess mod-rewrite lamp
1个回答
11
投票

试试这个:

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 中的中断命令。使用此标志来指示应立即应用当前规则,而不考虑进一步的规则。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.