2016-09-29 155 views
0

我已经在WordPress上创建了我的CMS,并通过wp-api将它暴露给全世界。apache web服务器部署问题

我对此有些怀疑。请帮忙弄清下面查询的解决方案。

  1. 要停止https://blog.domain-name.com访问,或者我们可以重定向到主站点即https://www ..com从任何人,除非以下情况下,所有即将到来的请求。
  2. 想通过特定的IP地址访问wp-admin
  3. 想要向世界公开wp-api即API端点。例如:可以从任何IP地址访问https://blog.domain-name.com/wp-json/wp/v2/posts

这里是我的,我写了

ErrorDocument 401 /blog.example.local/index.php?error=404 
    ErrorDocument 403 /blog.example.local/index.php?error=404 

    <IfModule mod_rewrite.c> 

    RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_URI} ^(.*)?/wp-login\.php(.*)$ [OR] 
    RewriteCond %{REQUEST_URI} ^(.*)?/wp-admin$ 

    RewriteCond %{REMOTE_ADDR} !^127.0.0.1$ 
    RewriteRule ^(.*)$ - [L,R=403] 

    #RewriteCond %{REQUEST_FILENAME} !-f 
    #RewriteCond %{REQUEST_FILENAME} !-d 
    #RewriteCond %{REQUEST_URI} ^(.*)?/wp-json(.*)$ 
    #RewriteRule ^(.*)$ $1 [L] 

    RewriteRule ^(.*)$ https://www.example.local/blog/$1 [R=301,L] 

    </IfModule> 
    <files wp-config.php> 
     order allow,deny 
     Require all denied 
    </files> 

一切都是Linux服务器(AWS EC2实例)和Apache Web服务器上的.htaccess样品​​。

回答

0

我等了很长时间才得到答案,但仍没有得到任何回应。所以我开始修改.htaccess文件并阅读所有的Apache重写规则。

最后,我成功地得到了答案,它对我来说工作得很好。我在这里发布答案,以便任何人都可以获得参考,如果他们将来会遇到问题。

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] 
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin(.*)$ 
RewriteCond %{REMOTE_ADDR} ^127.0.0.1$ 
RewriteRule ^(.*)$ $1 [QSA,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_URI} ^(.*)?wp-json(.*)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteRule ^(.*)$ $1 [QSA,L] 
RewriteRule . /index.php [L] 

RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php(.*)$ 
RewriteCond %{REQUEST_URI} !^(.*)?wp-admin(.*)$ 
RewriteCond %{REQUEST_URI} !^(.*)?wp-json(.*)$ 
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$ 
RewriteRule ^(.*)$ https://www.example.com/blog/$1 [R=301,L] 

</IfModule> 

<files wp-config.php> 
order allow,deny 
Require all denied 
</files>