1

.htaccess ファイルを使用してバニティ URL を作成する際に問題が発生しています。

.htaccess ファイルは現在、サイトのルート フォルダー (mysite/.htaccess) に保存されています。バニティ URL を書いているページは、1 レベル下 (mysite/jobs/job.php) です。

私の .htaccess ファイルのコードは次のとおりです。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mysite/jobs/job.php?job_id=$1

mysite/jobs/job.php ファイル内に、次のコードを含めました。

if(isset($_GET['job_id']) == true && empty($_GET['job_id']) == false) {
    $job_id = $_GET['job_id'];
    echo $job_id;

}

私の問題は次のとおりです。ブラウザに「http://localhost/mysite/jobs/1」と入力すると、1 をエコーし​​たいときに、jobs/1 がエコーされます (つまり、「jobs/」のない実際のジョブ ID)。最初に)。PHPファイルを1レベル上に移動することなく、これを達成するために.htaccessファイルを変更する方法を知っている人はいますか?

4

3 に答える 3

1

これは、RewriteRule が REQUEST_URI 全体をキャプチャしているためです (正規表現のため)。代わりに次のことを試してください。

RewriteRule ^jobs/(\d+)$ /mysite/jobs/job.php?job_id=$1

(先頭のスラッシュが必要かどうかは思い出せません...両方の方法で試してください)。

于 2012-12-08T00:08:25.103 に答える
0

このビデオでは、バニティ URL の作成方法と、問題が発生した場合の解決方法を明確に説明しています。ただし、あなたのコードは私には問題ないようです。このビデオが役立つかどうかを確認してください。これは、私が作成を学んだ場所です。

バニティ URL の例

PS: 別のビデオの続きがあります。それを確認することを忘れないでください。

于 2013-01-16T13:56:06.953 に答える
0

これは、すべての後にある URL のコンテキスト全体を渡すためです。mysite/

これを試して:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/jobs/(.*)$ /mysite/jobs/job.php?job_id=$1
于 2012-12-08T00:09:21.633 に答える