通过'.htaccess'显示php为html,也是php扩展无效

时间:2015-07-02 21:06:21

标签: php html apache .htaccess mod-rewrite

我真的需要帮助。我知道如果我在.htaccess文件中添加以下行,php将显示为html。

RewriteRule ^(.*)\.html$ $1.php

当我写http://example.org/abc.html时,实际上abc.php正在执行。但是当我写http://example.org/abc.php时,它也有效。

我可以在.htaccess文件中添加.php无效的内容。我的意思是当我写abc.html时,abc.php将会执行。但如果我写abc.php,它将显示404错误。

2 个答案:

答案 0 :(得分:0)

尝试将此添加到您的.htaccess

RedirectMatch 404 \.php$

RedirectMatch与查询字符串不匹配,因此甚至应该重定向whatever.php?someParam=someValue

答案 1 :(得分:0)

添加此规则应将.php文件重定向到404

RewriteRule ^(.*).php - [R=404]

R = 404部分将返回代码设置为404.这里有关于R选项的文档:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_r。 " - "表示URL未经过更改传递。

您还需要在两个重定向规则(取自http://www.askapache.com/htaccess/modrewrite-tips-tricks.html#Fix_infinite_loops)之前添加此内容:

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

这将阻止重定向循环发生,当用户使用.html扩展名和.php扩展名时,会向用户显示404错误。