这是我关于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默认值。我怀疑问题是相关的,但不能解决它们中的任何一个。
答案 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";
没有标题();只是为了看问这是否是问题所在。