3

我希望我能足够清楚地解释这一点,但如果不让我知道,我会尽力澄清。

我目前正在使用 ColdFusion 开发一个站点,并设置了一个 mod_rewrite 规则,以使其看起来像该站点正在使用 PHP。index.php 的任何请求都由 index.cfm 处理(规则将 *.php 映射到 *.cfm)。

这很好用——到目前为止,很好。问题是如果直接请求 index.cfm(或任何 ColdFusion 页面),我想返回 404 状态代码。

如果我尝试使用 mod_rewrite 阻止对 *.cfm 文件的访问,它还会返回 404 以请求 *.php。

我想我可能不得不更改我的 Apache 配置而不是使用 .htaccess

4

3 回答 3

1

您可以使用该S标志来跳过404规则,如下所示:

RewriteEngine on

# Do not separate these two rules so long as the first has S=1
RewriteRule (.*)\.php$ $1.cfm [S=1]
RewriteRule \.cfm$ - [R=404]

如果您也在使用该Alias选项,那么您还应该添加PT标志。有关详细信息,请参阅mod_rewrite 文档

于 2008-08-15T08:02:25.513 回答
0

发布您已有的规则作为起点,这样人们就不必重新创建它来帮助您。

我建议首先在将 .php 映射到 .cfm 文件的规则上测试 [L]。

于 2008-08-12T14:06:42.900 回答
0

您必须使用两组不同的重写规则,一组用于 .php,另一组用于 .chm,并使它们与 RewriteCond %{REQUEST_FILENAME} 互斥。并按照 jj33 的建议使用标志 [L]。

您可以将规则保存在 .htaccess 中。

于 2008-08-12T14:57:47.303 回答