WordPress看不到.htAccess规则

时间:2018-05-06 作者:apt-get_install_cat

我目前正在建立一个小型企业网站,并在家庭服务器上托管,由于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”没有任何效果。我已经尽力为您提供了尽可能多的信息,但是,如果您需要更多信息,请随时询问我。

1 个回复
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中的htaccessas instructed

前两个条件(RewriteCond 指令)意味着应该从根本上解决这些问题.htaccess 文件,而不是.htaccess 中的文件/wp-admin 子目录?

结束