我已经编写了一个Wordpress插件,可以创建.html
个文件。我试图获取它,以便当访问者点击sitename.com/newsletters
时,它会在index.php
/wp-content/plugins/my-plugin/files
文件
当然,index.php文件是目录中所有其他文件的列表,因此当有人点击sitename.com/newsletters/january.html
时,浏览器会加载/wp-content/plugins/my-plugin/files/january.html
,但网址仍为http://sitename.com/newsletters/january.html
我认为这应该照顾它,但它不起作用。只是给了我一个" Post not found"错误。
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
答案 0 :(得分: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]
退出规则链而不进一步重写。