从PHP保存HTML
问题描述:
比方说,我想用php在我的网站上生成动态数据,但我不希望用户去任何.php
页面。从PHP保存HTML
相反,我想每晚运行一次php脚本并保存一个.html
文件,以便浏览我的网站时用户只需看到静态html。
我想象的方式是每个需要动态数据的页面都有一个.html和一个.php文件。例如:
- newsAndInformation.html
- newsAndInformation.php
这是常见的做法?那里有很好的教程吗?
答
您可以通过在.htaccess文件中使用巧妙的mod_rewrite规则speed up your site with static pages。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Example/ index.php [L,NC,QSA]
此规则执行以下操作...
检查该文件不存在请求的URL
检查一个目录不存在的请求的URL
如果是 - 显示静态文件/目录(目录需要一个index.html文件)
如果NO - 重定向到您的PHP文件,它可以运行并保存相应的文件下一个请求
你的PHP文件将吐出的响应:
<?php
ini_set('zlib.output_compression', 'On');
ob_start();
// Logic to create your content...
// use ob_get_contents() to get the response and save it
ob_end_flush();
?>
一粗略的例子将是...
yoursite/Example/Test/
在第一次访问,这将打你的PHP页面。然后,您将文件保存到/Example/Test/index.html
,第二个请求将在不使用PHP的情况下为静态页面提供服务。
答
添加在.htaccess
文件中的以下
RewriteEngine on
RewriteRule ^(.*)\.html $1\.php
这将使http://www.domain.com/myPage.html
真正指向http://www.domain.com/myPage.php
但用户看到.html
您可以编辑'.htaccess'。 – hjpotter92 2013-02-22 17:31:34
这就是所谓的静态缓存。您可以使用ob_start和ob_get_contents来获取您生成的代码并将其放入静态文件中。您可以使用htaccess来检查是否存在静态文件,并在静态文件存在并且年龄小于xx天时提供静态文件..这仅仅是一个简单的例子。 – 2013-02-22 17:31:59
这是因为你想缓存一些东西还是因为你想让它看起来像一个HTML页面? 因为有了URL重写,你可以让url'/ anypage.html' 指向'anypage.php'而没有任何人意识到它。 – cIph3r 2013-02-22 17:34:05