我有一个index.php文件,其中包含以下几行:
if(isset($_GET["page"]))
{
$page=$_GET["page"];
setcookie("page",$page,time()+315360000);
}
else if(isset($_COOKIE["page"]))
{
$page=$_COOKIE["page"];
}
else
{
$page="stock";
}
这是一个简单的页面处理程序脚本,如果您的URL中没有变量,则会打开上次查看的页面。
现在我想用.htaccess文件重写URL,我的结果真的很奇怪。 我的网页托管在www.host.com/directory/index.php等服务器上
基本上,我希望网址看起来像www.host.com/directory/$page
.htacces文件被放置在"目录",并且其中包含以下行:
RewriteEngine on
RewriteRule ^(.*)$ index.php?page=$1 [NC]
我的问题: 如果系统可以根据$ page变量找到文件,则会包含该文件。如果文件不存在,将显示错误页面。现在,在错误页面上,我回显了$ page变量,它是" index.php"。
我的代码有什么问题,我该如何解决?我之前从未写过任何.htaccess ... 谢谢你的回答!
答案 0 :(得分:2)
您的规则正在循环,您需要添加一些条件来防止这种情况发生:
RewriteEngine on
RewriteCond $1 !^index\.php
RewriteRule ^(.*)$ index.php?page=$1 [NC]
或
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [NC]