显示有误差不
文件都不存在了,怎么解析呢
当然不可以啦,特殊符号就不行
notepad++
直接把
location /aaa/bbb/xxx { rewrite ^/detail/(\d+).html$ /xxx.php?id0$1 last; }
这么久都没人回答?windows下叫计划任务,完全图形化操作。
好像没有了
^/detail /去掉了就好了
好了,问题在于引入位置
/** * 模板输出重写方法 * @access protected * @param boolean $isStatic 是否保存为静态文件 * @param string $template 模板文件名 * @param array $vars 模板输出变量 * @param array $replace 模板替换 * @param array $config 模板参数 * @return mixed */ private function staticFetch($isStatic=false,$template = '', $vars = [], $replace = [], $config = []) { $HTML = $this->fetch($template, $vars, $replace, $config);//获得页面HTML代码 if ($isStatic){//判断是否需要保存为静态页 $thisModule=request()->module();//获取模块 $thisController=request()->controller();//获取控制器 $thisAction=request()->action();//获取方法 $new_file = "{$thisModule}/{$thisController}"; if(!file_exists($new_file)){ //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir($new_file, 0777,true); } $new_file.="/{$thisAction}.".config('default_return_type'); file_put_contents($new_file,$HTML);//生成静态页 } return $HTML; }
可以的啊。你直接 view('xxx'); xxx 就是一个静态文件不就可以了吗?
一、如何建立【.htaccess】文件
直接新建一个文件,并且命名为【.htaccess】是无法实现的,这是一个只有扩展名,没有文件名的文件,系统会提示输入文件名。我们可以用如下方法实现:
1、下载一个这个文件;
2、使用FTP、DW、记事本等软件建立,FTP可以直接建立这个文件,软件的话新建一个文件另存一下就可以了;
3、使用CMD或其他操作系统界面重命名文件为【.htaccess】;
4、【.htaccess】文件通常放置在根目录下,也可放置在子目录中,其效力范围为相对当前的路径,路径规则与html一致。
二、让【.htaccess】文件生效
有时候放置了【.htaccess】文件发现并没有作用,是因为Apache没有开启它,我们可以在Apache的安装目录的【conf】目录中找到【httpd.conf】文件,使用记事本打开,开启这个选项:
1、找到【LoadModule rewrite_module】,去掉前面的【#】号;
2、找到所有【AllowOverride None】修改为【AllowOverride All】
3、如果没有【AllowOverride None或All】这条,则找到【<Directory />】和【</Directory>】,在这之间加上【AllowOverride All】;
4、重启Apache即可生效。
三、实例
伪静态路径:【http://www.abc.com/news/post-16.html】
真实路径:【http://www.abc.com/index.php?m=post&c=index&catdir=news&id=16】
【.htaccess】写法:
============
RewriteEngine on
RewriteRule http://www.abc.com/([a-zA-Z]{1,})/post-([0-9]{1,})\.html$ http://www.abc.com/index.php?m=post&c=index&catdir=$1&id=$2
============
当然,如果是放在根目录下,使用相对路径即可:
============
RewriteEngine on
RewriteRule ([a-zA-Z]{1,})/post-([0-9]{1,})\.html index.php?m=post&c=index&catdir=$1&id=$2
============
解释:
注意,因为显示的问题,可能看不清空格,可以复制代码粘贴到其他软件查看。
文件中【RewriteEngine on】表示开启rewrite;
【RewriteRule】表示规则,每行一条,格式为【RewriteRule 匹配用户提交的的URL 服务器上脚本真正的URL】;
路径中的染色部分为参数,匹配时为标准的正则表达式,真实路径中的参数使用【$1】、【$2】、【$3】从左到右依次替代匹配URL中的正则表达式。
验证:
建立一个.htaccess文件,写入以下内容:
============
RewriteEngine on
RewriteRule ([a-zA-Z]{1,})/post-([0-9]{1,})\.html
test.php?get1=$1&get2=$2
============
保存。
再建立一个test.php文件,写入以下内容:
============
<?php
echo '你的get1是:' . $_GET['get1'];
echo '<br/>';
echo '你的get2是:' . $_GET['get2'];
?>
============
保存到同目录。
访问http://localhost/news/post-15.html
如果页面显示:
============
你的get1是:news
你的get2是:15
============
即宣告成功。
开头讲的入口换为index.php文件,可这样不就变成动态页面了,并且第二次不会默认进入index.html文件吗?进入了index.html文件后index.php文件怎么运行
强刷是ctrl +F5,弱刷是F5
恩,目前流行的框架都自带伪静态设置,路由重写功能已配置好,只需要在配置项修改就ok
多级目录
没有!
在资料下载下面有个 PHP实现页面静态化-课程代码 下载....如果老师有把他自己的 PPT 打包到里面的话下载下来就有了....如果老师没有打包到里面的话.那除非你联系老师让他发送给你,不然没办法了.
因为缓冲区的内容是 php引擎解析代码后的输出到页面中的内容 也就是做静态化需要的内容 而file_get_contents()是获取文件内容。
jq什么版本的???
不需要root 只要服务器软件(apache/nigx)开启重写模块就可以了,服务器压力会增加,主要看你正则表达式写的怎么样,一般重写到单一入口文件都是可以忽略的。
显示错误404 说明请求的文件找不到,老师写的重写规则不适合咱们,你需要针对自己的项目来设置重写规则。