nginx配置后只有根目录首页index.php能访问,其他页面404

只有首页面根目录可以访问,其他页面地址都是404 not found。网上有很多介绍用url重定向,url重写都试了无效,要不就是重定向过多。其实解决方法很简单:

以phpstudy2016环境组合包为例:

1、打开vhosts.conf;

2、找到对应的域名;

  listen       80;
        server_name  www.xuduowei.com xuduowei.com;
        root   "E:/phpStudy/WWW/xuduowei/public";
        location / {
            #index  index.html index.htm index.php;
            #autoindex  on;
              try_files $uri $uri/ /index.php?$query_string;
                if (!-e $request_filename){  
                   rewrite ^/(.*) /index.php last;  
               }
        }

注意实际增加:

   try_files $uri $uri/ /index.php?$query_string;
                if (!-e $request_filename){  
                   rewrite ^/(.*) /index.php last;  
               }

注意:若是nginx服务器,直接增加如下配置:

    location / {
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
        }
    }

提示:若你的vps是虚拟机,要找准虚拟机下对应的配置项!

徐老师项目亲测有效!想学习php开发的,可以联系我。微信:weilanweb 或者15309695130


关注公众号,了解更多it技术(it问答网

nginx不支持.htaccess解决办法

其实nginx和.htaccess一点关系都没有只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能。在nginx的配置中直接include .htaccess文件就好

include /站点目录/.htaccess;

多么简单,但是更让人哭笑不得的是有大部分人根本就不知道nginx与apache是两个不同webserver程序,于是不少人这么干:在nginx里include .htaccess文件后,把apache伪静态规则的.htaccess上传到站点根目录下…无语。其实nginx可以include任何文件,而不仅仅是.htaccess。

其实nginx这样引用.htaccess跟apache还是有区别的:

1、nginx是启动引入,因为nginx特别注重效率,所以启动的时候会把所有的配置文件读入内存,然后启动个。如果发现有语法错误,则启动失败。而apache则是动态引入,每次访问站点都会重新载入配置。

2、nginx中的include是手动添加,指定目录。apache已经把.htaccess作为它的一种特色机制,并且支持站所有子目录都可以有.htaccess文件。

根际实际开发经验,很多人在早期都是用虚拟空间的多,而早期的虚拟空间基本都是apache做webserver,所以用户不需要联系空间商就能自己做伪静态,而开源程序更是方便的拓展这一功能(ecshop,wordpress,phpcms等等)。并且维护也方便,只要覆盖.htaccess就好。

其实,没有几个站点经常去修改.htaccess,并且现在基本使用vps居多。

nginx 也可使用 .htaccess 文件实现多种功能。

在 nginx/nginx.conf的server{}中引入 .htaccess 文件:
include /vhosts/quany.info/.htaccess;

参考来源:https://yq.aliyun.com/ziliao/46421


关注公众号,了解更多it技术(it问答网

PHP 快速实现数组去重

使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组。这个函数大多数情况下都能工作得很好。但是,如果你尝试在一个大的数组里使用array_unique()函数,它会运行地慢一些。

有一个比较好而且更快的函数array_flip()来替代使用array_unique()函数来创建唯一的数组。这个魔法般的函数会交换数组里面每一个元素的键和值,因为键值必须唯一,因此,你会得到跟array_unique()函数一样的结果。

更快的方式实现PHP数组去重

/* 创建一个包含重复值的,一共四个元素的数组 */

$array = array(‘green’,’blue’,’orange’,’blue’);

/* 翻转数组,你将会得到唯一键值的数组

array(‘green’=>0,’blue’=>1,’orange’=>2); */

$array = array_flip($array);

/* 然后再翻转一次,将键和值重新放置,然后得到数组:array(0=>’green’,1=>’blue’,2=>’orange’); */

$array = array_flip($array);

因为我们已经移除了一些元素,因此数组看起来不是正常的序列。比如我们可能会得到:array(0=>’A’,2=>’B’,5=>’C’);。在某些情况下,这不是一个问题,但是如果你需要数组的键值保持数字的序列,你可以使用一到两种方法解决键值乱序的问题。

使用array_merge修复数组的keys

添加array_flip之后的函数,将会对数组的键值排序并且让它们恢复到正常的序列,如:0,1,2,3…

$array = array(‘green’,’blue’,’orange’,’blue’);

$array = array_flip($array);

$array = array_flip($array);

/* 使用array_merge()函数修复键值*/

$array = array_merge($array);

第二种方式,使用array_keys

注意,这种修复数组键值的方法比使用array_merge()函数稍微快了一点。你也可以在最后一步结合使用array_keys()函数(此函数返回翻转后的值)。然后当你翻转数组的值,键值就会根据顺序创建。

$array = array(‘green’,’blue’,’orange’,’blue’);

$array = array_flip($array);

/* 跟第一个例子一样,但是现在我们先提取数组的键值 */

$array = array_keys($array);


关注公众号,了解更多it技术(it问答网

NoSQL

NoSQL泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
虽然NoSQL的流行与火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动。尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟、稳定。不过现在也面临着一个严酷的事实:技术越来越成熟——以至于原来很好的NoSQL数据存储不得不进行重写,也有少数人认为这就是所谓的2.0版本。该工具可以为大数据建立快速、可扩展的存储库。

百科:https://baike.baidu.com/item/NoSQL/8828247?fr=aladdin

NoSQL数据库的四大分类

键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存储数据库。
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
文档型数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph.
因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

Nosql简介 Redis,Memchche,MongoDb的区别

https://www.cnblogs.com/lina520/p/7919551.html

 

 


关注公众号,了解更多it技术(it问答网

要注册ICP许可证是不是得先注册公司?

如果你想做B2C式的网站,可以先注册个10W左右的网络公司,然后办理个非经营ICP备案许可,可以先运行,运行起来后再办理经营性ICP备案许可。

另外,导航类网站只需要办理非经营性ICP许可就可以开办。

ICP备案的经营性和非经营性在备案号上就有显示,其实最简单的就是看他除了ICP备案号外还有没有一个叫“增值电信业务许可证”的东西。

如果还是不明白,可以通过HI联系。徐多蔚 15309695130  微信号:weilanweb


关注公众号,了解更多it技术(it问答网

PHP加密工具选择,ioncube和ZendOptimizer各自的优点是什么

他们各自的优缺点是:
ZendOptimizer(Zend Guard):
1、Zend Guard只能对带有PHP标记或源码的文件进行加密,对于其他不带有PHP标记的文本方式保存的文件不能进行加密操作
2、ZendGuard只能用于配置了ZendOptimizer的环境中,不能独立运行
3、ZendGuard在PHP4下的错误,对于PHP4的绝对路径及相对路径在加密时会出现较大的差别。
4、支持PHP4.2.X~5.2.X版本的加密
5、使用的ZendOptimizer(PHP引擎)可以提高源码20~50%以上的速度优化,结合ZendGuard可以提高至50%以上的性能速度 优化,且ZendOptimizer可以安装于当前较多主流系统中

ionCube:

1、ionCube不仅可以加密带有PHP标记或源码的php文件还可以对非php文件的以text方式保存的文件进行加密操作,如xml,js,css等。(但是读写时必须使用 ionCube所提供的读入API进行读写操作。)
2、ionCube在功能方面经过测试可以优胜于Zend公司的 ZendGuard,不仅支持期限,注册码,等加密方式,还支持对IP,MAC地址等复杂的加密方式
3、可加密的PHP版本从PHP4.0.6~5.2.X(比ZendGuard高2个级别)
4、ionCube与Zend一样,为了提高PHP性能优化也提供了相应的PHP引擎,可以为大多数操作系统提供PHP优化功能,但是可惜的是,至今未提供Windows版本的PHP引擎。
5、ZendGuard在PHP4下的错误,在ionCube中没有出现,可以看出ionCube相对稳定
6对于ionCube来说,对带有PHP标记或源码的文件采用压缩加密方式处理,对于非php的文本类文件则采用加密方式处理。在读入时必须使用 “ioncube_read_file/ ioncube_write_file”读写文件。因此在使用ionCube加密前需要对相应的PHP代码进行改造后才能使用。

ionCube官方:

http://www.ioncube.com/loaders.php

 

 


关注公众号,了解更多it技术(it问答网

js 刷新上一页,及其它刷新页面的方法


<a href="javascript:history.go(-1)">返回上一页</a> 
<a href="javascript:location.reload()">刷新当前页面</a> 
<a href="javascript:" onclick="history.go(-2); ">返回前两页</a> 
<a href="javascript:" onclick="self.location=document.referrer;">返回上一页并刷新</a> 
<a href="javascript:" onclick="history.back(); ">返回上一页</a> 

页面跳转: 

onclick="window.location.href='list.php'" 

Javascript刷新页面的几种方法: 

1,history.go(0) 
2,location.reload() 
3,location=location 
4,location.assign(location) 
5,document.execCommand('Refresh') 
6,window.navigate(location) 
7,location.replace(location) 
8,document.URL=location.href 

自动刷新页面的方法: 
1.页面自动刷新:把如下代码加入<head>区域中 

<meta http-equiv="refresh" content="10"> 

10指每隔10秒刷新一次页面. 

2.页面自动跳转:把如下代码加入<head>区域中 

<meta http-equiv="refresh" content="10;url=http://www.baidu.com"> 

10指隔10秒后跳转到http://www.baidu.com页面 

js自动刷新当前页面: 

复制代码代码如下:

<script language="JavaScript"> 
function myrefresh() 
{ 
window.location.reload(); 
} 
setTimeout('myrefresh()',1000); //指定1秒刷新一次 
</script> 

JS刷新框架的脚本语句 

复制代码代码如下:

//刷新包含该框架的页面用 
<script language=JavaScript> 
parent.location.reload(); 
</script> 

//子窗口刷新父窗口 
<script language=JavaScript> 
self.opener.location.reload(); 
</script> 
( 或 <a href="javascript:opener.location.reload()">刷新</a> ) 

//如何刷新另一个框架的页面用 
<script language=JavaScript> 
parent.另一FrameID.location.reload(); 
</script> 

要关闭窗口时刷新或开窗时刷新,在<body>中调用以下语句即可: 

复制代码代码如下:

<body onload="opener.location.reload()"> 开窗时刷新 
<body onUnload="opener.location.reload()"> 关闭时刷新 
<script language="javascript"> 
window.opener.document.location.reload() 
</script> 

 


关注公众号,了解更多it技术(it问答网