在大学连个可以聊天的异性朋友聊天频率把握都没有怎么办

您的位置:&&nginx下基于ThinkPHP框架的网站url重写
ThinkPHP在nginx下的各种rewrite伪静态看起来是很麻烦的,但了解透彻了nginx的url重写机理以及ThinkPHP的各种url模式,那么在nginx下为基于ThinkPHP的应用做特定的url重写就很容易了,本文是博主基于ThinkPHP开发的各种web应用以及为这些引用在nginx做各种url适配重写的多次实践中总结而来。======ThinkPHP是什么就不再多啰嗦了,ThinkPHP网址:ThinkPHP框架基于M-V-C思想,模块化的设计并采用了单一入口模式(单一入口但并不是只能有一个入口),这样为nginx下的url重写免去了不少麻烦。nginx下的基于ThinkPHP的应用的url重写,需了解ThinkPHP的各种url格式参数的处理逻辑以及nginx重写的原理。简单点说,无论哪种url格式,nginx都需要执行ThinkPHP下的应用单一入口文件,然后将各种url格式按照一定的格式规则进行进行参数化处理,最终执行指定模块与控制器;这个过程用户是看不到的,用户只能看到各种规则的url,这些url的规则如下:
#第一种 普通get多参数方式htt://blog.jjonline.cn/index.php?m=Info&a=usrInfo#第二种 pathinfo方式htt://blog.jjonline.cn/index.php/Info/usrInfo#带有get的其他变量htt://blog.jjonline.cn/index.php/Info/usrInfo/Id/1#第三种 普通get单参数方式 ThinkPHP中又称”兼容模式“htt://blog.jjonline.cn/index.php?s=Info/usrInfo#带有get的其他变量htt://blog.jjonline.cn/index.php?s=Info/usrInfo/Id/1/*#当然这三种模式还可以附带文件后缀 #其实合并起来也就3种#附带后缀只是上述三种规则的细微变化#TinkPHP框架核心代码获取到以上三种模式的参数后#会进行特定的处理 带不带后缀 带哪种后缀 均可配置#也就是如下几种规则*/#第一种htt://blog.jjonline.cn/index.php/Info/usrInfo.html#第二种htt://blog.jjonline.cn/index.php?s=Info/usrInfo.html
======什么是pathinfo?pathinfo是php的功能,nginx并没有pathinfo功能,在php中书写如下代码:
&?phpprint_r(pathinfo('/test/index.txt'));?&
Array( [dirname] =& http://blog.jjonline.cn/test [basename] =& index.txt [extension] =& txt [filename] =& index)
通过以上运行结果,可以看到打印出来的数组key字段已经很明显的标示出其意义来了。ThinkPHP就采用了这种思想,将单一入口的url传参格式化,典型的基于ThinKPHP的url示例如下:
http://blog.jjonline.cn/index.php/Usr/UsrInfo
简单点理解,上述格式化的url形式就是ThinkPHP需要支持的pathinfo路径模式。对这个种格式化的url进行稍微解释,访问这个么一个地址,对基于ThinkPHP框架的网站来说,实际需要执行的就是网站根目录下的index.php文件,而该url中后面的/Usr/UsrInfo则被作为mvc思路中的功能模块参数与控制器参数,转换为普通get方式传参则上述url就要变为:
http://blog.jjonline.cn/index.php?m=Usr&a=UsrInfo
当然,get参数的变量该例子中一个是m一个是a,这个变量名在ThinkPHP中是可以改变的,这就需要依据具体的基于ThinkPHP的应用的模块规划与喜好了。有了这种思路,nginx的url重写就有了最原始的写法了,对于上述pathinfo的格式化url,nginx在不做url重写时会把它当做一个路径来执行,一般来说没有谁会吃多了撑得在网站根目录下建立一个名字叫index.php的目录(注意:是目录,不是一般意义上的文件),所以第一种url重写出现了:
#一下是nginx配置文件的代码片段 仅书写url重写的部分location / { root /var/www; index index.html index.htm index.php; if (!-d $request_filename) { rewrite ^/(.*)/(.*)/*$
/index.php?m=$1&a=$2
但问题出现了,基于ThinkPHP的应用不仅仅只有上述例子中的这种pathinfo模式,现在变成这样的了:(为了便于解说,称如下代码段为“url示例”,后方提到“url示例”就是指此处的三种url格式)
#第一种,未隐藏index.php 但url路径中有.html后缀http://blog.jjonline.cn/index.php/Usr/UsrInfo.html#第二种,隐藏脚本文件index.phphttp://blog.jjonline.cn/Usr/UsrInfo或http://blog.jjonline.cn/Usr/UsrInfo/#第三种,需要在访客看到的网址中隐藏掉index.php,且带.html后缀http://blog.jjonline.cn/Usr/UsrInfo.html
再了解下ThinkPHP中处理url的各种逻辑,ThinkPHP对传参进行了多种判定与处理,除了get方式传递不同的get变量作为mvc中的控制变量外,还有一个“兼容模式”的传参规则,也就是如下:
#ThinkPHP可以处理的传参形式http://blog.jjonline.cn/index.php?s=/Usr/UsrInfo
这种传参形式依然是get方式传参,但省略了多个get参数。ThinkPHP框架会对获取到的get变量$_GET['s']进行处理,从其中提取出mvc所需要的各个控制变量。所以又一种nginx的url重写出现了:
location / { root /var/www; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; }}
那么,现在需要同时兼容上述url示例中的三种格式又出问题了。最后解决方法如下:
location / { root /var/www; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^(.*)$ /index.php?s=$1 last; break; }}
当然,还有别的解决方法,专门针对pathinfo格式化路径的,就不再啰嗦,提供一篇文章:=======以上url重写均只做示例,不建议直接照搬,理解了nginx的url重写以及ThinkPHP的路由模式的原理后,按照自己的基于ThinkPHP的应用业务逻辑书写url重写代码才是王道。
转载请注明本文标题和链接:《》
邮箱(必填)
网址(选填)修改apache配置文件去除thinkphp url中的index.php
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了修改apache配置文件去除thinkphp url中的index.php的方法,大家参考使用吧
例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index.php呢?
1、httpd.conf配置文件中加载了mod_rewrite.so模块& //在APACHE里面去配置 代码如下:#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉
2、AllowOverride None 讲None改为 All&&&&& //在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为ALL)
代码如下:&Directory "D:/server/apache/cgi-bin"&AllowOverride none& 改&& AllowOverride ALLOptions NoneOrder allow,denyAllow from all&/Directory&
3、确保URL_MODEL设置为2,在项目的配置文件里写
代码如下:return Array(&& 'URL_MODEL' =& '2',);
4 、.htaccess文件必须放到跟目录下这个文件里面加: 代码如下:&IfModule mod_rewrite.c&RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]&/IfModule&补充:在windows下不能建立以点开头的文件,你可以先随便建立一个文件然后在DOS在操作 rename xxxx.xxxx&& .htaccess
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具1403人阅读
调试了好久,才发现把简单的事情搞复杂了。
其实原理很简单。
1.在配置文件中
'URL_MODEL'=&2,
2.在php.ini中
cgi.fix_pathinfo=1
去掉前面的注释
3.在Apache下conf配置文件中,
LoadModule rewrite_module modules/mod_rewrite.so
去掉前面的注释
然后重启apache,即可。
尊重原创。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
去掉 URL 中的 index.php
Think 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好。但
ThinkPHP 提供了各种机制来定制需要的 URL 格式,配合 Apache .htaccess 文件,更是可以
定制出人性化的更利于 SEO
的 URL 地址来。
.htaccess文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。我们可以利用 .htaccess
文件的 Rewrite 规则来隐藏掉 ThinkPHP URL 中的 index.php 文
件(即入口文件),这也是 ThinkPHP URL
伪静态的第一步。
例如原来的 URL
http://127.0.0.1/index.php/Index/insert
去掉 index.php
之后变为:
http://127.0.0.1/Index/insert
如此一来,就变成了
http://服务器地址/应用模块名称/操作名称[/变量参数] 的常见 URL 格式。
更改 Apache httpd.conf
提示:如果在虚拟主机商配置,请直接配置第三、四步,因为支持 .htaccess 的空间已经配置好了前面两步。
用编辑器打开
Apache 配置文件 httpd.conf(该文件位于 Apache 安装目录Apache2conf),并按如下步骤修改,。
一、加载了
mod_rewrite.so
确认加载了 mod_rewrite.so 模块(将如下配置前的 # 号去掉):
LoadModule
rewrite_module modules/mod_rewrite.so
二、更改 AllowOverride 配置
更改需要读取
.htaccess 文件的目录,将原来的目录注释掉:
AllowOverride None 为 AllowOverride FileInfo Options
,更改后的配置如下所示:
AllowOverride
FileInfo Options
.htaccess 是基于目录来控制的, E:/html/myapp& 该句即表示需要读取 .htaccess 文件的目录,要根据实际具体 Apache
的解析目录来配置。虚拟主机如果提供
.htaccess 控制,一般都已经配置好了。
三、添加 .htaccess 文件 Rewrite
在需要隐藏 index.php 的目录下(本教程中为 E:/html/myapp,也即入口文件所在目录)创建 .htaccess
文件,并写入如下规则代码:
RewriteEngine
#不显示index.php
RewriteCond %{REQUEST_FILENAME}
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1
[QSA,PT,L]
如果网站已经有 .htaccess
文件,在里面添加该段配置规则即可。如果不能创建该文件(Windows 平台不能创建),可以从本站下载该文件,但该文件仅配置了隐藏
的规则,点击此处下载。
四、更改项目配置文件
编辑项目配置文件 Conf/config.php ,将
URL 模式配置为 2(Rewrite模式):
'URL_MODEL'=&2,
至此,各个配置已经完成。保存各配置文件后,重启
Apache 服务器并删除 Runtime 目录下的项目缓存文件,在访问隐藏 index.php
后的地址测试是否成功:
http://127.0.0.1/html/myapp/Index/index
如果访问成功,那么利用
Apache .htaccess 文件的 Rewrite 规则隐藏 index.php
入口文件的配置就成功了。
ThinkPHP 配置
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 异性经常聊天产生感情 的文章

 

随机推荐