Apache mod_rewrite:重写^(。*)\。html $到$ 1.php并禁止直接访问^(。*)\。php $

时间:2010-07-31 00:54:17

标签: apache .htaccess mod-rewrite redirect

我的目的是将以.html结尾的网址重写为.php(实际上不是所有这些网址,但对于这个问题而言,这并不重要)。我还想禁止以.php结尾的网址(这样用户只能使用扩展名为.html的网址访问每个网页)。

我在.htaccess中使用这些规则:

RewriteRule ^(.*)\.php$ $1.html [R,L]
RewriteRule ^(.*)\.html$ $1.php [L]

但是,这会导致重定向循环。我想这是因为重写的.html到.php url被反馈到mod_rewrite并导致第一个规则被触发。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

我不确定这样做的好处是什么,假设您的链接网址只指向.html路径,但除此之外,您认为重写的网址反馈给{ {1}}。在每个目录(mod_rewrite)上下文中使用它时总是会发生这种情况,因为.htaccess必须将自己指定为请求处理程序才能在Apache请求流程链的这个阶段正常工作。

解决您的实际问题,您可以通过根据发送到服务器的原始请求调整第一条规则来解决问题。这可以这样做:

mod_rewrite