我一直在试图让这个工作起作用,但我无法做到。
我需要将所有html页面重定向到php页面,除扩展名外都有相同的名称,但仅当php版本存在时才会显示。
因此,如果页面是“products.html”,我需要它来检查“products.php”是否存在,如果存在,执行php版本(不重定向浏览器并显示products.php)如果不存在,渲染html版本
可以使用htaccess完成吗?如果是的话,你能帮我一个例子或者指点我到哪里可以找到这个例子吗?
旁注:我需要同时使用.html
和.htm
页面。
我还尝试使用我在网上找到的AddType和AddHandler示例使html页面执行php代码,但它们都没有为我工作,所以这就是为什么我决定使用每个页面的php版本。
感谢。
答案 0 :(得分:2)
将此代码放入DOCUMENT_ROOT/.htaccess
文件中:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)\.html?$ /$1.php [L]
答案 1 :(得分:-1)
您可以在index.php
文件中将重写规则设置为index.php
,检查文件是否存在并使用include($page);
$file = $_GET['page'];
if (file_exists($file)) {
include($file);
} else {
// 404 page...
}
答案 2 :(得分:-2)
您的答案在此解决:htaccess rewrite if redirected file exists
解决方案是您重写的条件。它可以放在根文件夹的.htaccess
中,也可以放在您想要此功能的文件夹中。
RewriteCond %{REQUEST_FILENAME} (.*)\.html?$
RewriteCond %1\.php -f
RewriteRule ^(.*)\.html?$ $1.php [P,L]
与答案的唯一区别是P
,因为我已将您的请求设为内部重定向,以向用户显示旧网址。另外,我使用HTML?获取htm和html文件。