.htaccess:重定向到子目录

时间:2016-09-29 20:27:01

标签: wordpress .htaccess

我已经编写了一个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

1 个答案:

答案 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]

退出规则链而不进一步重写。