我有一个名为/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页面。
答案 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中是以大写形式还是小写形式出现。
另外,我建议使用破折号而不是下划线。