PHP调试时主页正常显示,主页上的链接连接失败,怎么办
时间:2013-09-25 08:19:10 来源: 网易博客

问题描述:APMServ搭建的PHP运行环境,在本地调试时在跳转页面的时候出现如下错误代码:

Object not found!
The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.

If you think this is a server error, please contact the webmaster.

Error 404
192.168.1.1
12/09/09 03:58:41
Apache/2.2.9 (APMServ) mod_ssl/2.2.9 OpenSSL/0.9.8h PHP/5.2.6

解决方法:

        只能正常显示主页,绝对路径的文件也访问正常,但是只要是点击主页上的链接都连接失败,显示上述错误代码。在还原WordPress和数据库后,找到出现 错误的原因,我在wordpress后台设置中的固定链接中使用了静态页面,以至于Apache不能正常解析。

        要让wordpress成功使用静态化页面我们就要在APMServ中启用支持静态页面解析功能。我的APMServ版本为5.2.6,下面就以5.2.6版本为例描述我解决的方法。

        首先打开你的APM的安装目录,找到 APMServ5.2.6\Apache\conf\httpd.conf,为防止意外最好在修改前先备份一个。

注意:打开这类文本编辑文件最好用editplus,notepad++等专业编辑器来编辑( 有时用记事本,保存后会有编码问题,我用记事本打开修改后无编码问题)。

1、找到(Ctrl+F查找):#LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的# (无#则不用管), 然后在再找到#APMServ默认虚拟主机。

2、找到以下这段文字

#APMServ默认虚拟主机
NameVirtualHost *:80

 ServerName *
 DocumentRoot "E:/wwwroot/APMServ5.2.6/APMServ5.2.6/www/htdocs"

 Options FollowSymLinks IncludesNOEXEC Indexes
 DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
 
AllowOverride None
 Order Deny,Allow
 Allow from all

 

修改为

#APMServ默认虚拟主机
NameVirtualHost *:80

 ServerName *
 DocumentRoot "E:/wwwroot/APMServ5.2.6/APMServ5.2.6/www/htdocs"

 Options FollowSymLinks IncludesNOEXEC Indexes
 DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml

 AllowOverride ALL 
 Order Deny,Allow
 Allow from all

 

然后保存,重启APMServ使之生效,这时候就会发现我们的WordPress完美支持静态化页面了。

其他供参考方法:

方法一、

找到以下这段文字

#APMServ默认虚拟主机
NameVirtualHost *:80

ServerName *
DocumentRoot "F:/mihuashu/APMServ5.2.6/www/htdocs"

Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
AllowOverride Options FileInfo
Order Deny,Allow
Allow from all

 


修改为

#APMServ默认虚拟主机
NameVirtualHost *:80

ServerName *
DocumentRoot "F:/mihuashu/APMServ5.2.6/www/htdocs"

Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
AllowOverride Options FileInfo
Order Deny,Allow
Allow from all


RewriteEngine On                                                                                                                           
RewriteRule ^(.*)/archiver/([a-z0-9\-]+\.html)$ $1/archiver/index.php?$2                                         
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3                   
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\% 3D$4&page=$3                                                                                                                               
RewriteRule ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3                                     

方法二、

找到上面类似这段代码修改为下面代码(自家服务器

#APMServ默认虚拟主机
NameVirtualHost *:80

 ServerName *
 DocumentRoot "D:/APMServ/APMServ5.2.6/www/htdocs"

 Options FollowSymLinks IncludesNOEXEC Indexes
 DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
 AllowOverride all
 Order Deny,Allow
 Allow from all
 RewriteEngine On
 RewriteCond %{REQUEST_METHOD} ^TRACE
 RewriteRule .* - [F]

 

#phpMyAdmin配置信息
Alias /phpmyadmin "D:/APMServ/APMServ5.2.6/www/phpMyAdmin"

 AllowOverride None
 Options Indexes FollowSymLinks Includes
 Order allow,deny
 Allow from all

#APMServ配置ASP支持
ProxyPass   /asp   http://127.0.0.1:10322
ProxyPassReverse   /asp/   http://127.0.0.1:10322/

#APMServ配置由可视化界面自动创建的虚拟主机,如需手工创建虚拟主机,请不要将代码放在vhost.conf文件内。
Include conf/apmserv/vhost.conf
Include conf/apmserv/vhost_ssl.conf

#APMServ配置由可视化界面自动创建的虚拟目录,如需手工创建虚拟目录,请不要将代码放在vdir.conf文件内。
Include conf/apmserv/vdir.conf

TraceEnable off

方法三、

   找到你所在的虚拟目录修改以下这个地方
(如果你有配置虚拟主机的 话应修改X:\APMServ5.2.6\Apache\conf\apmserv\vhost.conf 文件)我有配置多个虚拟主机所以我修改的文件是X:\APMServ5.2.6\Apache\conf\apmserv\vhost.conf

如果没有设置虚拟主机请如下设置

找到
      AllowOverride None
      改成
      AllowOverride Options FileInfo
      重启Apache服务即可
      如果有设置虚拟主机请按以下设置,我是有设置虚拟主机的所以设置如下。
找到
      AllowOverride None
      改成
      AllowOverride ALL
      重启Apache服务即可

如果设置后无效,请看Apache\conf\httpd.conf这个文件中 LoadModule rewrite_modulemodules/mod_rewrite.so这句前面没有#号,如果有,去掉之后重启Apache;

=====================================================================

打开Apache目录下的conf目录,找到httpd.conf 打开,找到:

#LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的# (无#则不用管) 然后在再找到#APMServ默认虚拟主机,把 AllowOverride None改为 AllowOverride Options FileInfo,这样,APMServ默认网站目录就能支持 .htaccess

如果想让其他的虚拟主机都支持rewrite 则需要编辑 D:\APMServ5.2.6\Apache\conf\apmserv 下的 vhost.conf 查找需要支持rewrite的站点

把AllowOverride None改为 AllowOverride Options FileInfo

最后,重新启动APMServ 这样,您的APMServ服务器就可以完美的支持伪静态了!

====================================================================

2、找到Apache\conf\apmserv\vhost.conf这个文件,里面是虚拟主机的配置信息,找到对应虚拟主机的配置信息,找到 AllowOverride None,修改成AllowOverride All。

一般情况下这里还要加上伪静态规则....

记得改完后重启Apache以便使修改生效。


补充知识:

php简单伪静态实例

1.检测Apache是否支持mod_rewrite

通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。

如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。

如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。

2.让apache服务器支持.htaccess

如何让自己的本地 APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找

Options FollowSymLinks

AllowOverride None

 

改为

Options FollowSymLinks

AllowOverride All

 

就可以了。

3.建立.htaccess 文件

如果是在windows平 台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着 急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文 件重命名:

(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。

(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。

(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。

4.rewrite规则学习

我们新建一个.htaccess文件之后,就在里面写入以下内容:

RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭

RewriteRule ([0-9]{1,})$ index.php?id=$1

我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!

好吧,现在我们可以实现伪静态页面了,写下一下的规则:

RewriteEngine on

RewriteRule ([a-zA-Z]{1,})-([0-9]{1,})\.html$ index.php?action=$1&id=$2

([a-zA-Z]{1,})-([0-9]{1,})\.html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
本篇文章来自
http://blog.163.com/budong_weimin_zh/,供大家学习参考,转载请注明出处