求IIS6 yii隐藏index.phpp的方法

win2003+iis6.0+FastCGI+PHP环境配置常见问题及解答
最近因为工作需要,要用PHP开发网站并且在自己的服务器发布,因为以前服务器上都是ASP的网站所以没有PHP的环境,而且又要与ASP网站同时并存,所以在搭建平台的时候出现了一些问题。我估计很多朋友可能会遇到和我一样的情况,今天就把我遇到的问题和解决的方法分享给大家。
首先了解下IIS+PHP目前比较常见的几种配置:
1、CGI方式加载PHP环境,通常就是IIS里面配置解释器为php.exe,早期比较常见,目前使用较少。
特点是:稳定,但效率太低。
2、ISAPI方式加载PHP环境,通常就是IIS里面配置解释器为php5isapi.dll,目前使用最多,应用最广。
特点是:多线程,效率较高,但不够稳定。
3、FastCGI方式加载PHP环境,在IIS环境里并不常见,但其它系统环境应用还是有的,不过IIS7.0开始内置FastCGI了。
特点是:高效率,高稳定性,属于将来发展趋势。
因为PHP 5.3以上版本发布的Windows版已经不支持ISAPI模式了,所以我打算按微软推荐的FastCGI。
同时FastCGI也是最好最快的,因为FastCGI大大加强了IIS处理PHP的能力,能迅速提高PHP站点的反应速度和生产力,并具有更高的稳定性和安全性。
还有就是PHP下载的时候也有几个不同版本选择。那就是VC6 X86和VC9 X86。
VC6是什么? VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。
VC9是什么? VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。
如果你是在windows下使用Apache+PHP的,请选择VC6版本;
如果你是在windows下使用IIS+PHP的,请选择VC9版本;
按照我们今天说的当然是要下载VC9版本;
还有一点注意的是php5.5以后就不在支持win2003、xp等系统了所以我下载的是当时5.4最高版本5.4.21;
PHP下载地址:http://windows.php.net/download/
具体的安装配置步骤我就不写了网上一搜一大把:下面就直接从遇到的问题以及如何解决开始:
第一:FastCGI的 “HTTP Error 500 & Server
Error.”错误
FastCGI下载地址:http://www.iis.net/expand/fastcgi/
安装完后写了一个phpinfo.php页面测试~结果提示HTTP Error 500 & Server
Error错误(这个错误内容上面还有几行英文忘了是什么了)。我在网上找了很多解决方法但是问题依旧,正在不知道如何解决的时候突然想到win2003文件夹的权限问题于是我把php安装的文件夹D:/php(这个根据个人情况)右键--属性--安全里添加everyone用户并且给所有权限。在测试页就OK了。
第二:ISAPI_rewrite 设置问题
我用的是ThinkPHP框架开发的网站程序为了好的效果需要通过ISAPI_rewrite(伪静态)隐藏index.php,从网上找了很多方法基本都是一样的但是都不行,最终在ThinkPHP官网的一篇文章的回复找到一个答案在经过自己的一些修改问题解决了。
RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 32
RewriteBase
# unsupported directive: [ISAPI_Rewrite]
# 3600 = 1 hour
# unsupported directive: CacheClockRate 3600
RewriteRule ^/httpd(?:\.ini|\.parse\.errors).*$ / [NC,F,O]
# # Line 5: (Unknown expression) RewriteEngine on
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule
^(?!/index.php)(?!/Public)(?!/Uploads)(?!/robots.txt)(.*)$
/index\.php\?s=$1 [NC]
但是奇怪为什么网上很多别人可以的我却不行呢?最终我觉的是因为我的服务器之前已经安装了ISAPI_rewrite3为了配合ASP的网站使用所以我也没有卸载~我觉的应该是ISAPI_rewrite3的规则方法和网上找到的rewrite规则略有不同。所以我吧ISAPI_rewrite3上使用成功的内容给大家发一下~其他的网上可以搜有很多。
第三个:验证码无法显示问题
网站在本地测试验证码都没有问题~发到服务器上就不能正常显示,不知道是何原因~不过问题找到了解决方法:“初步判断是Thinkphp执行到输出验证码的前面有内容输出,清除之前的输出就行”。
public function verifyimg(){
& import("ORG.Util.Image");
& ob_end_clean();
//主要加这个函数
& Image::buildImageVerify();
第四个:php5中session丢失的问题
就是登陆网站用户名和密码在页面跳转后无法获取session值~这个在IE和谷歌比较低版本会出现,在网站找了好久终于找到答案,原因是对php.ini的设置中session.cookie_path设置的问题。因为之前没有设置过php所以完全是参照网上的找到的资料导致设置错误(看来网上找到也不一定都对)。
正确的设置是:session.cookie_path = /
也就是说保持原来的设置只要把前面的;号去掉就可以了。
php.ini对session的相关设置比较多而且比较重要下,所以发下php.ini关于session的配置及说明
session.save_handler = files
存储/读入数据用的句柄[服务器端,不必计入字符串引号]
session.save_path =E:/;
用于存放上述句柄文件的服务器目录路径(一定要设置正确,否则不能执行)
session.use_cookies = 1 ;
cookies session.name = PHPSESSID ;
在 cookie值 里 session 使用的名字
session.auto_start = 0 ;
是否在请求开始时自动启动,初始化 session
session.cookie_lifetime = 0 ;
在 cookie 里面 session 存在的时间秒数,0 直到浏览器重新启动
session.cookie_path = / ;
这个路径是指cookie变量在网站中的作用路径,“/”表示整个网站中都有效
session.cookie_domain = ;
存放数值cookie的主机(主键)默认为无,表示根据 cookie 规范产生 cookie 的主机名
session.serialize_handler =
序列化数据的句柄,标准句柄是 php
session.gc_probability = 1;
打开每个session初始化时自动开始 垃圾收集进程
session.gc_maxlifetime = 1440;
当超过这个时间,存储的的数据会被认为是垃圾,被 gc 进程清除; 检查包含 ids 的 HTTP 里无效的外部保存
URLs的内容
session.entropy_length = 0 ;
&从文件里读入的允许字节数
session.entropy_file = ;
&指定在这里建立
session.entropy_length = 16 ;
确定 HTTP 缓存外貌 {nocache,private,public}
session.cache_expire = 180 ;
&超过 n 分钟文档到期,不删
这样我的网站基本就可以顺利访问了。还有就是开始本来不想直接用iis+php配置,从网上搜到可以“apache转发实现iis和apache共享80端口”方法我就不发了网上很多~因为我的服务器上用这样的方法很不稳定经常掉线最终我放弃了这个方法~但在测试的时候也遇到几个问题觉得很有价值顺便也发出来和大家分享:
1、在win2003上安装WampServer无法启动
解决方法:下载安装 Microsoft Visual C++ 2008 SP1 Redistributable Package
下载地址:/zh-CN/download/details.aspx?id=5582
我第一次安装的是 C++ 2010但是不行,这个可能和服务有关系~所以安装这个需要根据自己的情况。
2、错误的运行程序(exe文件)会被Visual Studio2005默认打开
就是我刚安装完WampServer有问题没法打开的时候,却每次被Visual
Studio2005直接打开。最后找到原因是因为Visual Studio
2005的“实时调试”功能默认打开的原因。解决方法:
在“注册表编辑器”窗口中,找到并删除下列注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
如果您的计算机运行的是 64 位操作系统,还请删除下列注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows
NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
这就是我遇到的一些问题和解决方法,希望这些内容能给大家带来帮助,祝大家遇到的问题都能顺利解决。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。前天小涛简单的说了一下的,为了更好的实现SEO优化,今天小涛在说一下在iis和环境下是如何隐藏index.php的:
如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:
RewriteRule (.*)$ /index\.php\?s=$1 [I]
在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:
rewrite& &rules& &rule name=”OrgPage” stopProcessing=”true”& &match url=”^(.*)$” /& &conditions logicalGrouping=”MatchAll”& &add input=”{HTTP_HOST}” pattern=”^(.*)$” /& &add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” /& &add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” /& &/conditions& &action type=”Rewrite” url=”index.php/{R:1}” /& &/rule& &/rules& &/rewrite&gt
在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.txt中配置转发规则实现:
location / { // …..省略部分代码
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1
其实内部是转发到了ThinkPHP提供的兼容模式的URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。
到这里不管什么环境下,都可以实现隐藏index.php的目的了,这样就可以根据自己的需求的随心所欲了,哈哈……CI框架如何删除URL中index.php的终极解决方案
[问题点数:20分,结帖人x]
CI框架如何删除URL中index.php的终极解决方案
[问题点数:20分,结帖人x]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年4月 PHP大版内专家分月排行榜第二2014年3月 PHP大版内专家分月排行榜第二2014年3月 Web 开发大版内专家分月排行榜第二2014年2月 PHP大版内专家分月排行榜第二
2014年4月 Web 开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。1789人阅读
YII隐藏index.php
发布于: June 9,
am&分类:&&作者:&&阅读:
YII隐藏index.php,主要用到web服务器的rewrite和pathinfo功能。rewrite是将无法找到的地址rewrite到index.php
后面。不管什么web服务器首先要开启rewrite功能。apache要开启rewrite_module,即:
去掉LoadModule rewrite_module modules/mod_rewrite.so前的“#”符号
确保&Directory “…”&&/Directory&中有“AllowOverride All”。Nginx一般编译时候都会带上rewrite模块。
pathinfo是由于框架获取路径信息使用到的$_SERVER数组中pathinfo信息需要web服务器提供。但
Nginx默认不支持pathinfo。下面记下两个YII隐藏index.php的方法,感觉和CI框架差不多。
Nginx下的配置:
~ \.php {&&&&&
&&&&fastcgi_pass&
127.0.0.1:9000;
&&&&fastcgi_index
&&&&include&fastcgi_
&&&&fastcgi_param
SCRIPT_FILENAME&$document_root$fastcgi_script_name;
&&&&fastcgi_param
PATH_INFO&$fastcgi_script_name;
&&&&access_log
&&&&if&(!-e&$request_filename){
&&&&&&&&rewrite
^/(.*) /index.&
Apache下的配置:
在与index.php文件同级目录下添加文件“.htaccess”,内容如下:
+FollowSymLinks
IndexIgnore
RewriteEngine
directory&or&a
file exists,&use&it
RewriteCond
%{REQUEST_FILENAME} !-f
RewriteCond
%{REQUEST_FILENAME} !-d
otherwise forward it to index.php
RewriteRule
. index.php
最后在YII的配置文件main.php中修改urlManager类似下面:
'urlManager'=&array(
&&&&&&&&&'urlFormat'=&'path',
&&'showScriptName'=&false,
&&&&&&&&&'rules'=&array(
&&&&&&&&&&'post/&id:\d+&/&title:.*?&'=&'post/view',
&&&&&&&&&&'posts/&tag:.*?&'=&'post/index',
&&&&&&&&&&'&controller:\w+&/&action:\w+&'=&'&controller&/&action&',
&&&&&&&&&),
&&&&&&&&),
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:92488次
积分:1850
积分:1850
排名:第12216名
原创:76篇
转载:113篇
(1)(1)(1)(3)(9)(18)(32)(32)(93)}

我要回帖

更多关于 隐藏index.php 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信