mod_rewrite将一个文件后缀类型别名为另一个文件后缀
时间:2020-03-05 18:39:11 来源:igfitidea点击:
我希望我能解释得足够清楚,但如果没有让我知道,我会尽力澄清。
我目前正在使用ColdFusion开发站点,并具有一条mod_rewrite规则,以使其看起来像该站点正在使用PHP。对index.php的任何请求均由index.cfm处理(该规则将* .php映射为* .cfm)。
到目前为止效果很好,很好。问题是,如果直接请求index.cfm(或者任何ColdFusion页面),我想返回404状态代码。
如果我尝试使用mod_rewrite阻止对* .cfm文件的访问,它还会返回一个404请求* .php。
我认为我可能不得不更改我的Apache配置,而不是使用.htaccess
解决方案
回答
发布我们已经具有的规则作为起点,这样人们就不必重新创建它来为我们提供帮助。
我建议首先尝试将[.php]映射到.cfm文件的规则[L]。
回答
我们必须使用两组不同的重写规则,一组用于.php,另一组用于.chm,并使它们与RewriteCond%{REQUEST_FILENAME}互斥。并使用jj33建议的标志[L]。
我们可以将规则保留在.htaccess中。
回答
我们可以使用S
标志来跳过404
规则,如下所示:
RewriteEngine on # Do not separate these two rules so long as the first has S=1 RewriteRule (.*)\.php$ .cfm [S=1] RewriteRule \.cfm$ - [R=404]
如果我们还使用Alias
选项,则还应添加PT
标志。有关详细信息,请参见mod_rewrite文档。