1

そのため、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>

私のリンクの問題に関するアドバイスや助けをいただければ幸いです。よろしくお願いします。

4

2 に答える 2

1

ただし、href = "index.php?url=first"のようなリンクをクリックすると。myDomain.com/firstを表示したい場合、アドレスバーにmyDomain.com/index.php?url=firstが表示されます。

「クリーン」URLにリンクする必要があります。ここではリダイレクトしないことを忘れないでください。あなたは書き直しています!つまり、これを変更する必要があります。

<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>

このようなものに:

<p>This is the home page.</p>
<p>To the first page. <a href="/url/first">First Page</a></p>
<p>To the second page. <a href="/url/second">Second Page</a></p>
于 2012-08-30T09:29:45.897 に答える
0

それらの2行を見てください:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

つまり、URLが実際のファイルまたはフォルダーを指している場合は、次のルールを試さないでください。

を使用するmyDomain.com/index.php?url=firstと、実際のファイルを指します:index.php。そうすると、ルールは試されません。

コードのように、常にクリーンURLを使用する必要がありますmyDomain.com/first

于 2012-08-30T09:30:55.803 に答える