PHP localhost重定向问题

时间:2013-04-04 01:47:42

标签: php apache localhost

这是我关于SO的第一个问题,我希望我做得对。我是PHP / MySQL编程的新手。我刚刚用WAMP建立了一个本地开发环境,它或多或少都在工作(至少,我得到绿色图标,WAMP php信息屏幕,phpMyAdmin工作,我的一些.php文件正常工作,拉动来自相应目录的.css和.inc.php文件。)

我遇到问题的地方是使用带有header()的php重定向。

我尝试了很多不同的选项,其中一些从这里收集,但都没有。我收到错误“在此服务器上找不到请求的URL /localhost/home.php。”

另外,在浏览器的位置栏中我得到:localhost / localhost / home.php,但我不知道为什么。

以下是来自调用程序(index.php)的片段的一个版本,其中一部分来自SO的回答:

if (isset($_SESSION['Authenticated'])) {
    $host  = $_SERVER['HTTP_HOST'];
    $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
    $extra = 'home.php';
    header("Location: http://$host$uri/$extra");
    exit;
    }

原始版本,也不起作用,是:

if (!isset($_SESSION['Authenticated'])) {
    $redirect = 'home.php';
    header("Location: $redirect");
    exit;
    }

我还尝试了原始版本中$ redirect变量的多个值,包括各种版本的路径,但无济于事。

就我的设置而言,这里有一些您可能会觉得有用的信息:

WAMP服务器版本2.2 Apache 2.2.22版 PHP版本5.4.3 MySQL版本5.5.24

Relevant line from C:\Windows\System32\Drivers\hosts
127.0.0.1           bke.local       #BKE Test Environment

我使用默认的C:\ wamp \ www作为DocumentRoot

Relevant lines from C:\wamp\bin\apache\apache2.2.22\conf\httpd.conf:
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "c:/wamp/www/"
.
.
.
# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf


Relevant lines from C:\wamp\bin\apache\apache2.2.22\conf\extra\httpd.vhosts.conf:
# Use name-based virtual hosting.
NameVirtualHost *:80
#####NameVirtualHost 127.0.0.1:80
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/apache2/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/apache2/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

#<Directory C:/Dev>
#   Order Deny,Allow
#   Allow from all
#</Directory>

我的文件的当前位置: .php文件到C:\ wamp \ www .css文件到C:\ wamp \ www \ styles .inc.php文件到C:\ wamp \ www \ includes

在我意识到我遇到这个问题之前,我尝试使用来自多个网站的信息设置多个虚拟主机(所有这些都说同样的事情),但是根本无法完成这项工作,所以我淘汰了更改并使用WAMP默认值。我怀疑问题是相关的,但不能解决它们中的任何一个。

1 个答案:

答案 0 :(得分:0)

我在这里出去了。

在我详细研究之前,我认为这是一个简单的疏忽。

试试:

if (!isset($_SESSION['Authenticated']))
{
  header ("Location: home.php");
  exit;
} // this will basically re-direct to home.php if $_SESSION['Authenticated'] is not set

但在执行上面发布的代码段之前,只需执行以下操作:

echo "http://$host$uri/$extra";

没有标题();只是为了看问这是否是问题所在。