2

私はWordpressで、「Register」というページを作成すると、http://example.com/register/を指しますが、ルートにregisterという名前のフォルダーがまったくないことを見てきました。これはどのように行われますか?

こんな感じです。ユーザーがhttp://example.com/index.phpの Registerというリンクをクリックすると、ユーザーは新しいページに移動し、ブラウザーの URL はhttp://example.com/register/になり、ページの読み込み。registerフォルダ自体が存在しません。

以下の回答から、リクエストが index.php を変更することで渡されることがわかりました。.htaccess

http://example.com/register/に登録ページが表示されるindex.phpようにするには、どのコードを配置すればよいか知りたいです。

4

4 に答える 4

2

私のWordpress.htaccessファイルには次のものがあります。

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

これは基本的に、URLの「ファイル名」部分がファイルとして存在しない!-fか、ディレクトリとして存在する場合!-d、リクエストを内部的に書き換えて、Wordpress/index.phpによるリクエストの処理を強制することを意味します。index.php

わかりました。追加のコメントに基づいて、次の.htaccessルールが適用さhttp://domain.com/<anything>れ、内部的に書き換えられhttp://domain.com/index.php?page=<anything>ます。これは、大文字と小文字(NCフラグ)に関係なく実行され、既存のクエリ文字列(QSAフラグ)を保持(プリペンド)します。これは、サーバー上に存在しないファイル名とディレクトリに対してのみこれを行います。

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?page=$1 [NC,QSA,L]

これには、プログラムで処理できるはずの次の副作用があります。これはディレクトリ参照であるため、末尾の「/」を含むhttp://domain.com/register/ように書き換えられます。http://domain.com/index.php?page=register/繰り返しますが、PHPコードでそれを処理できるはずです。

于 2012-08-17T16:34:06.673 に答える
1

Web サーバー (この場合は Apache) が要求されたファイル パスを開こうとすると/register/、この場合は最初に.htaccessファイルを調べます。

他の.htaccess多くのものの中でファイルは、リクエストを別のパスにリダイレクトできます。

index.php通常、WordPress ではすべてのリクエストが 1 つのファイルにリダイレクトされ、元のリクエストが読み取ら/register/れ、正しい html が提供されます。

WordPress が正しい html を提供するために何をするかはまったく別の問題ですが、ここから始めることができます: https://www.google.com/search?q=how+wordpress+works

于 2012-08-17T16:45:09.210 に答える
0

ニール・マーティン、これは本当に簡単な質問ではありません。URL書き換えに関するいくつかの優れた資料を読むことをお勧めします

于 2012-08-17T16:49:05.040 に答える
0

Wordpressは、次のように.htaccessファイルのmod_rewriteを使用します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

ファイルまたはディレクトリが存在せず、スクリプトがindex.phpでない場合、すべてのページリクエストをindex.php経由でルーティングします。

于 2012-08-17T16:34:19.637 に答える