[英]htaccess rewrite doesn't work as expected
我有一個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文件...感謝您的回答!
您的規則是循環的,您需要添加一些條件來防止這種情況發生:
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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.