2016-09-29 213 views
0

我寫了一個Wordpress插件,它創建.html文件。我想要得到它,這樣,當訪問者點擊sitename.com/newsletters它顯示index.php文件中/wp-content/plugins/my-plugin/files.htaccess:重定向到子目錄

當然,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

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

其退出規則鏈沒有進一步改寫做到這一點。

+0

完美。謝謝你的偉大的解釋:) – timgavin