我在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文件的新手。谢谢大家!
答案 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>