簡體   English   中英

htaccess重寫無法按預期進行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM