允许登录访问者访问HTML子文件夹

时间:2012-06-18 作者:jchwebdev

我在根文件夹中安装了WordPress站点。根目录下是一个/docs文件夹,其中包含一堆较旧的html文件。我希望只允许登录的WordPress用户能够访问这些/文档html页面(不要与WordPress的“页面”混淆)。

我创建了一个WordPress“门户”页面,如果访问者登录,该页面将显示指向/文档页面的链接。我还想加入一个文本搜索功能(我知道怎么做),这样登录的访问者可以获得相关文档html页面的列表

我所不知道的是如何防止未登录的访问者直接访问/文档页面的链接和搜索?

我知道,如果我将html页面转换为php并选中一个referer,我就可以做到这些。但如果可能的话,我不想重做所有旧的html(如果必须这样做,我只想将它们导入WordPress分类法中,但我希望避免这种情况!)

我看了看。htaccess和我本来希望设置一个ENV变量或使用REFERER,但我一直在读到这样的东西不可靠。

想法?

1 个回复
SO网友:SickHippie

看看这条线here - 它包括使用。htaccess基于WordPress登录的cookie保护目录。

这个htaccess以防线程丢失-显然您需要更改uploads/premium 到您的目录:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^.*uploads/premium/.*
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . /index.php [R,L]
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Edit: 托肖正确地指出,这种方法是不可靠的,因为cookie是基于浏览器的,很容易被欺骗。因此,我想再添加一种方法:HEREDOC syntax. 快速而肮脏,也许经过了可怕的思考,这绝对是一种更好的方式,但总的来说值得一试。基本上,您将对/docs 目录假设您的文件都以<!DOCTYPE, 只需查找<!DOCTYPE 并替换为:

<?php include_once(\'/wp-config.php\');
if ( is_user_logged_in() )
{ print <<<HTML
<!DOCTYPE
然后找到您的结束语</html> 标记并替换为:

</html>
HTML;
} else {
echo \'Who are you and how did you get this number?\';
?>
将文件名批量更改为.php 使用Renamer 或者类似的东西,还有viola-您已经将WordPress功能添加到了静态html文件中。当然,在执行任何大容量操作之前,请确保您已经备份了文件,无论您多么确定这些文件可以正常工作。只需一个小小的输入错误,你就可以花上几个小时的时间来恢复它。

结束

相关推荐

在多次更新后,HTML编辑器的内容已损坏

在一个完美的世界中,WordPress会将我输入的内容输入HTML编辑器,并将其逐字写入浏览器接收的帖子/页面文档。正在禁用wpautop 在这方面已经帮了我一点忙。唉。。Setup: 我在编辑器中写入一些HTML,然后单击“更新”。我的帖子/页面格式正确,但编辑器的内容已更改:p 和br 标记消失了,分别替换为实际的空行和换行符。查看源代码时,编辑器的内容textarea 是我最初键入的,但好像p 和br 标记实际上是在textarea.The problem is that when I click