我目前正在建立一个小型企业网站,并在家庭服务器上托管,由于Wordpress没有遵守我制定的任何规则,我遇到了无法增强安全性的障碍。htaccess。我想最好阻止访问wp登录。php或wp admin来自除我之外的其他IP。所以我使用了我在各地都能找到的代码:
ErrorDocument 401 /path-to-your-site/index.php?error=404
ErrorDocument 403 /path-to-your-site/index.php?error=404
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^IP Address One$
RewriteCond %{REMOTE_ADDR} !^IP Address Two$
RewriteCond %{REMOTE_ADDR} !^IP Address Three$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
,但这不起作用,所以我尝试了另一点:
# Block access to wp-admin.
order deny,allow
allow from x.x.x.x
deny from all
(请记住,这些都是按照指示放在wp管理员的.htaccess中的,但这不起作用,所以我复制了它并将其放在“html”文件夹中,但都不起作用),但这些都不起作用,所以我认为它一定是与代码有关。所以我决定我可以用密码保护wp登录。带有的php。htpasswd文件不在“html”文件夹中,而这段代码位于这两个文件夹中。htaccess文件:
# Protect wp-login
<Files wp-login.php>
AuthUserFile /var/www/.htpasswd
AuthName "Private access"
AuthType Basic
require user insertusernamehere
</Files>
然而,这也不起作用,让我觉得WP甚至没有看到任何规则。
这是当前两个中的代码。htaccess文件:
ErrorDocument 401 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404
ErrorDocument 403 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404
#Protect wp-login
<Files wp-login.php>
AuthUserFile /var/www/.htpasswd
AuthName "Private access"
AuthType Basic
require user wpsecure
</Files>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^INSERTMYIPHERE$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
(commented)Block access to wp-admin
order deny,allow
allow from INSERTMYIPHERE
deny from all
(commented)BEGIN WordPress
(commented)END WordPress
我已经为此奋斗了几天,几乎没有取得任何进展。我确实看过这个网站:
https://www.keycdn.com/support/htaccess-not-working/ 为了查看是否有任何内容,apache“AllowOverride”设置为“None”,但将其更改为“All”没有任何效果。我已经尽力为您提供了尽可能多的信息,但是,如果您需要更多信息,请随时询问我。
SO网友:MrWhite
apache“AllowOverride”设置为“None”,但将其更改为“All”没有任何效果:
我更改了“apache2.conf”文件中的“AllowOverride”。
现在还不清楚你的确切位置AllowOverride
. 此指令只能在目录上下文中使用。即a内<Directory>
主服务器或VirtualHost配置中的容器。
您应该已经有如下部分(不应更改):
<Directory "/">
AllowOverride None
</Directory>
服务器根目录(即。
"/"
) 只能设置为
None
, 否则Apache将搜索
.htaccess
文件一直到服务器根目录,这可能会导致安全/性能问题。
相反,您应该仅为您的文档根目录重写此选项。这可能会在您的特定<VirtualHost>
对于您的站点。(或在主服务器配置中-在上述<Directory>
容器—如果仅为整个服务器配置了一个站点。)例如:
<Directory "/var/www/html">
AllowOverride All
</Directory>
假设
/var/www/html
是文档根目录的绝对文件系统路径,其中
.htaccess
文件位于。
<小时>
ErrorDocument 401 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404
ErrorDocument 403 /var/www/html/wp-content/themes/zerif-lite/index.php?error=404
旁白:中指定的路径
ErrorDocument
指令应该是相对于文档根而不是服务器根的URL路径。
<小时>
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
请记住,这些都将在。wp admin中的htaccess
as instructed前两个条件(RewriteCond
指令)意味着应该从根本上解决这些问题.htaccess
文件,而不是.htaccess
中的文件/wp-admin
子目录?