2

検索結果への直接のきれいなリンクを作成するために、Wordpress で書き換えルールを作成しようとしています。

「オブジェクト」というカスタム投稿タイプを使用しています

私の結果ページは次の URL にあります: http://www.domain.com/objects/

新しいオブジェクトのリストを指すこの種の URL を作成したい: http://www.domain.com/objects/new

書き換えられたクエリは次のようにする必要があります: http://www.domain.com/objects/?filter=new

その後、$_GET['filter'] 値を使用してオブジェクト (meta_query) をクエリできるようになります...

私の問題

私はこのコードでこれを試みました:

add_rewrite_tag('%filter%','([^&]+)');
add_rewrite_rule('objects/new/','objects/?filter=new','top');

.htaccess は次のようになります。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^objects/new/ /objects/?filter=new [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

残念ながら、URL http://www.domain.com/objects/newにアクセスしようとすると、404 エラーが発生しました :(

デバッグ バーに次のように表示されます。

Request:
   objects/new

Query String:
   attachment=new

Matched Rewrite Rule:
   [^/]+/([^/]+)/?$

Matched Rewrite Query:
   attachment=new

Wordpress が添付ファイルを取得しようとする理由を誰か教えてもらえますか? 書き換えルールに何か問題がありますか、それとも何か不足していますか?

よろしくお願いします。

4

3 に答える 3

0

書き換えルールは次のように配置する必要があります

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^objects/new(.*)$ /objects/?filter=new [L]

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

于 2013-10-17T10:41:30.177 に答える