所以我知道這個問題已被問及20其他時間和20種不同的方式,但經過我所有的研究,我仍然無法弄清楚這一點。我的設置很好,直到我輸入一個帶有斜線的URL,然後出現404錯誤。例如,當我輸入URL mydomain.com/first
並按回車鍵時,它可以正常工作。當我輸入mydomain.com/first/
並回車時,它也可以正常工作。但是,如果我輸入它會將我發送到mydomain.com/first/second
並引發404錯誤。mod_rewrite斜線snafu
這是我整個的htaccess頁:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_\-]+)/?$ index.php?url=$1 [NC,L]
</IfModule>
我的索引頁:
<?php
define('ROOT_DIR', dirname(__FILE__) . '/'); // Define the root directory for use in includes
require_once (ROOT_DIR . 'library/bootstrap.php');
$url = strtolower($_GET['url']);
include(ROOT_DIR . 'views/headerView.php');
switch($url)
{
case "first": include(ROOT_DIR . 'views/firstPageView.php');
break;
case "second": include(ROOT_DIR . 'views/secondPageView.php');
break;
default: include(ROOT_DIR . 'views/homeView.php');
}
include 'views/footerView.php';
?>
和默認homeView模板:
<p>This is the home page.</p>
<p>To the first page. <a href="first">First Page</a></p>
<p>To the second page. <a href="second">Second Page</a></p>
我會覺得,既然斜線是可選的,而不是反向引用的一部分,在頁面加載之後斜槓將被保留在URL之外,但是我在我上面的例子中,它顯然不是。任何意見將不勝感激。謝謝
你的htaccess的最後一行:你真的有'/ IfModule>'嗎?或者這只是一個複製/粘貼錯誤? – zessx
我看不到如何去'mydomain.com/secondPage'可能導致獲得服務'/ firstPage/secondPage' –
@samsamX是的,這是一個錯字。感謝您指出了這一點。 –