私はいくつかの静的ページを持つ非常に単純な Web サイトを持っていましたが、書き換えルールを使用してデータを取り込む動的ページもいくつかありました。たとえば、次のようになります。
RewriteRule ^phone-directory/([^/\.]+).htm$ number.php?for=$1 [L]
したがって、phone-directory/google.htm のような URLは、常にクエリ文字列にgoogleを指定してnumber.phpをロードします。
CMS 機能用に WordPress をインストールしましたが、同時にディレクトリを動作させる必要があります。また、スタイリングの変更がサイト全体に反映されるように、ディレクトリで WordPress テーマを使用することも必要です。
そこで、WP テーマ ディレクトリにカスタム テンプレートを設定し、「company-listing」というワード プレスの「ページ」を設定しました。次に、htaccess ファイルの先頭に次のルールを追加しました。
RewriteRule ^phone-directory/([^/\.]+).htm$ index.php?p=23 [L]
p=23 は、カスタム ページ「company-listing」の場所を指します。
その書き換えルールは機能し、「company-listing」に移動しますが、それが問題です。URL は domain.com/company-listing に書き換えられます。
私はそれをしたくありません。私の書き換えルールがトリガーされ、index.php?p=23 がヒットすると、デフォルトの WordPress 書き換えルールがトリガーされると思います。私は、これが喜びなく起こらないようにするために、次の除外を試みました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/(phone-directory/.*)$
RewriteCond %{REQUEST_URI} !^/(index.php?p=23)$
RewriteCond %{REQUEST_URI} !^/(company-listing/.*)$
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
これを回避する方法はありますか?WordPress でカスタム テンプレートを使用して、選択した URL に書き換えるには? 要約すれば:
私が欲しい:
domain.com/phone-directory/google.htm
ロードするには:
domain.com/index.php?p=23 (これはワードプレスの「ページ」です)