Apache mod_rewrite 规则将特定的 REQUEST_URI 传递给特定的 html 文件

Apache mod_rewrite 规则将特定的 REQUEST_URI 传递给特定的 html 文件

我有一个非常基本的 html 演示文稿,我想使用 Apache mod_rewrite 来处理 URL。

home.html只是一个介绍页面,但我希望在没有REQUEST_URI

RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ home.html

slides.html渲染所有幻灯片。我使用 handlebars.js 从 .json 文件中提取数据,然后根据以下 URL 结构渲染每张幻灯片:/?q=N

RewriteCond %{REQUEST_URI} ^/\?q=\d+$
RewriteRule ^ slides.html

两者似乎都运行良好,但当两者同时存在时则不行。我遗漏了什么?

答案1

您的第一个重写规则不需要,RewriteCond并且两个规则需要正确排序。

您的第二条规则(与 slides.html 有关)意外起作用。查询字符串不是 的一部分%{REQUEST_URI}。您需要类似以下内容(未经测试):

重写条件 %{QUERY_STRING} ^q=\d+$
重写规则 ^/$ slides.html [L]

重写规则 ^/$ home.html [L]

我添加了 [L] 标志以防止进一步重写,但如果您需要对 URI 路径执行更多操作,则可以将其删除。

相关内容