使用wordpress中的htaccess限制对一个页面的访问

时间:2015-09-07 20:51:58

标签: php wordpress apache .htaccess

我在Wordpress theme_directory/page-rsvp.php中有一个页面,我需要密码保护.htaccess。我正在使用MAMP PRO在本地开发这个。

我在theme_directory中有一个.htaccess和.htpasswd文件。我在.htaccess文件中有以下内容,但它不起作用。每当我转到localhost:8888 / site / rsvp时,都不会显示身份验证提示。

 <Files “page-rsvp.php”>
   AuthName "Username and password required"
   AuthUserFile ./.htpasswd
   Require valid-user
   AuthType Basic
 </Files>

当然,wordpress安装根目录中的.htaccess文件如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /thepowerfulnow/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /thepowerfulnow/index.php [L]
</IfModule>

# END WordPress

如何仅使用第一个.htaccess文件(theme_directory中的文件)来使其工作?我需要将这个主题模块化。我是.htaccess文件的新手。谢谢大家!

1 个答案:

答案 0 :(得分:0)

您已将身份验证添加到主题目录中,因此仅当您使用以下URL访问主题文件时它才会起作用:

http://localhost:8888/site/wp-content/themes/theme_directory/page-rsvp.php

如果您想限制对网页网址的访问权限(例如/site/rsvp),则需要使用其他规则。您可以将以下行添加到主.htaccess文件的末尾,即WordPress根目录中的那一行。

# Set an env variable "auth" if the URI starts with "/site/rsvp"
SetEnvIf Request_URI ^/site/rsvp auth=1

AuthName "User and password required"
AuthType Basic
AuthUserFile "./.htpasswd"

# First, allow anyone
Order Allow,Deny
Satisfy any
Allow from all
Require valid-user
# Then, deny only if auth is required
Deny from env=auth

请记住将.htpasswd文件的副本保存到同一目录中,或使用AuthUserFile指令设置该文件的路径。

替代解决方案

我的原始回答使用<Location>指令过滤要限制的网址,但.htaccess个文件中无效。仅在服务器配置或虚拟主机下。在此处查看上下文http://httpd.apache.org/docs/2.2/mod/core.html#location

如果您想使用下面的限制规则,并且您在服务器中有权访问,则需要将其添加到某些上下文(服务器配置或虚拟主机)中。 Apache的配置文件通常位于/etc/httpd/etc/apache2目录中。

<Location "/site/rsvp"> # Where /site/rsvp is the URL you want to restrict
    AuthName "Username and password required"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
    AuthType Basic
</Location>