2016-09-29 21 views
0

私は.htmlファイルを作成するWordpressプラグインを作成しました。訪問者がsitename.com/newslettersに当たったとき、それはもちろん/wp-content/plugins/my-plugin/files.htaccess:サブディレクトリにリダイレクト

index.phpファイルを示し、index.phpファイルがディレクトリ内の他のすべてのファイルのリストであるようなので、誰かがsitename.com/newsletters/january.htmlに当たったとき、私はそれを取得しようとしていますブラウザは/wp-content/plugins/my-plugin/files/january.htmlをロードしますが、URLは残りますhttp://sitename.com/newsletters/january.html

私はこれを処理する必要があると考えましたが、動作しません。ちょうど私に "ポストが見つかりません"というエラーが表示されます。

RewriteRule ^newsletters/(.*) /wp-content/plugins/my-plugin/files/$1 [L]

ここに私の.htaccessファイル

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^newsletters/(.*) /wp-content/plugins/my-plugin/files/$1 [L] 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

答えて

1

あなたのルールがよさそうだし、行うことになっているものんです。

しかし、.htaccessファイルでは、URLが書き換えられると、生成されたURLがもう一度ルールにフィードバックされます。

ここではRewriteRule ^newsletters/...をスキップし、RewriteRule . /index.phpになります。しかし、index.php、Wordpressの主なエントリーポイントはあなたのファイルを/wp-content/plugins/my-plugin/files/に知らない。

これを修正するには、index.phpがリライトを呑み込まないようにする必要があります。あなたはさらに書き換えることなく、ルールチェーンを終了

RewriteRule ^wp-content/plugins/my-plugin/files/ - [L] 

であなたのRewriteRuleを付けることによってこれを行うことができます。

+0

パーフェクト。素晴らしい説明をありがとう:) – timgavin

関連する問題