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 

两者似乎都很好,但两者都不存在。 我错过了什么?

您的第一个重写规则不需要RewriteCond ,这两个规则需要正确sorting。

你的第二条规则(用slides.html来做)是偶然的。 查询string不是%{REQUEST_URI} 。 你需要像下面这样的东西(未经testing):

 RewriteCond%{QUERY_STRING} ^ q = \ d + $
 RewriteRule ^ / $ slides.html [L]

 RewriteRule ^ / $ home.html [L]

我添加了[L]标志来防止进一步的重写,但是如果你需要对URIpath做更多的事情,你可以删除它。