web-dev-qa-db-ja.com

書き換え規則がWordPressで機能しない

書き換えAPIを使用して新しい書き換え規則を追加しようとしています。

 add_rewrite_rule('product/([A-Z0-9]{10})', 'index.php/product/?asin=$1', 'bottom');
 add_rewrite_rule('product/(([A-Za-z0-9_])*)', 'index.php/product/?product=$1', 'bottom');
 add_rewrite_rule('compare/((([A-Z0-9]{10}),?)*)', 'index.php/compare/?asin=$1', 'bottom');
 add_rewrite_rule('categories/(([A-Za-z0-9]|\-|\_)*)', 'index.php/categories/?subcategory=$1', 'bottom');

パーマリンクが更新された後、それは.htaccessファイルに次の行を追加します。

RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]

次の.htaccessファイルが作成されます。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

しかし、私が次のURLにアクセスしようとしたとき:

http://example.com/product/ABCDE324AB

うまくいかないようです。私は常にページが見つかりませんページが表示されます。何か案は?

4
soul

私が上記から理解しているのは、あなたが.htaccessファイルを持っていて、そしてまた同じファイルに書かれているが、なお404問題を得ている正しいコードであるということです。その理由を教えてください。サーバーが.htaccessファイルによる読み取りまたは許可の上書きを許可していません。それでは、どうすればこの許可を与えることができますか? AllowOverride用のApache httpd.confファイル検索を開くと、それが何度か存在することがわかります。同じファイルに以下のコメントを確認してください。

# AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

AllowOverride NoneAllowOverride Allに置き換えるだけです

Apacheを再起動してください。

5
Manish