mod_rewrite将一个文件后缀类型别名为另一个

时间:2008-08-12 13:44:07

标签: apache mod-rewrite seo

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

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

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

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

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

3 个答案:

答案 0 :(得分: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 documentation

答案 1 :(得分:0)

将您已有的规则作为起点发布,以便人们无需重新创建它来帮助您。

我建议在将.php映射到.cfm文件的规则上测试[L]作为第一个尝试。

答案 2 :(得分:0)

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

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