そのため、Apacheのmod_rewriteモジュールを使い始めたところ、理解できない問題が発生しました。私が欲しいのは、ユーザーが手動でURLを入力したとき、またはページがリンクされたときに、アドレスバーにクリーンなURLを表示させることです。現在、入力するとクリーンなURLが表示されますが、ページがリンクされているときにクエリ文字列がアドレスバーに表示されます。例えば:
入力すると、myDomain.com / firstはmyDomain.com/index.php?url=firstのページを取得し、アドレスバーにmyDomain.com/firstを表示します。
ただし、href = "index.php?url=first"のようなリンクをクリックすると。myDomain.com/firstを表示したい場合、アドレスバーにmyDomain.com/index.php?url=firstが表示されます。
これが私のインデックスファイルと同じフォルダにある私の.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.phpがあります:
<p>This is the home page.</p>
<p>To the first page. <a href="index.php?url=first">First Page</a></p>
<p>To the second page. <a href="index.php?url=second">Second Page</a></p>
私のリンクの問題に関するアドバイスや助けをいただければ幸いです。よろしくお願いします。