Как я могу притворить страницу 403 на страницу 404 на apache 2.4? - PullRequest
0 голосов
/ 17 апреля 2019

Как мне сделать вид страницы 403 на 404 в apache 2.4?

Вот моя структура каталогов, я использую codeigniter3.

document_root/
    admin/ <- codeigniter project
        application/
        bin/
        public/
            index.php
        vendor/
        .htaccess <- access restriction write to here.
        composer.json
    index.html <- front page

Я хочу запретить доступ с несертифицированных IP-адресов.С кодом ответа возврата 404, а не 403. (Потому что каталог скрытия существует)

document_root/
    admin/ <- wanna return 404
        application/ <- wanna return 404
        bin/ <- 404
        public/ <- 404
            index.php <- 404
        vendor/ <- 404
        .htaccess  <- 404
        composer.json <- 404
    index.html <- return 200 (OK)

Поэтому я пишу этот код в .htaccess

### Define Environment Variables
<IfModule mod_env.c>
    SetEnv CI_ENV development
    SetEnvIf REMOTE_ADDR 192.168.33.1 IsAdmin=1
    #SetEnvIf X-Forwarded-For xx.xx.xx.xx IsAdmin=1
</IfModule>

### Access Restriction By Client IP Address
Order deny,allow
Deny from all
Allow from env=IsAdmin

ErrorDocument 403 /admin/

### Return 404 Error To Denied Clients (To Hide Directory Exists)
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{ENV:IsAdmin} !=1
    RewriteRule .* - [R=404,L]
</IfModule>

Но этот код влияет следующим образом.

document_root/
    admin/ <- 404 (OK)
        application/ <- 403 (NG)
        bin/ <- 403 (NG)
        public/ <- 403 (NG)
            index.php <- 403 (NG)
        vendor/ <- 403 (NG)
        .htaccess  <- 403 (NG)
        composer.json <- 404 (OK)
    index.html <- return 200 (OK)

Как мне сделать вид страницы 403 на 404, как мне нужно?Спасибо.

1 Ответ

0 голосов
/ 18 апреля 2019

Я решил это.

### Define Environment Variables
<IfModule mod_env.c>
    SetEnv CI_ENV development
    SetEnvIf REMOTE_ADDR 192.168.33.1 IsAdmin=1
    #SetEnvIf X-Forwarded-For xx.xx.xx.xx IsAdmin=1
</IfModule>

### Access Restriction By Client IP Address
Order deny,allow
Deny from all
Allow from env=IsAdmin

### Replace 403 Page To 404
ErrorDocument 403 /admin/e403.html
ErrorDocument 404 /admin/e404.html

<Files ~ "e40(3|4).html">
    Order allow,deny
    Allow from all
</Files>

### Return 404 Error To Denied Clients (To Hide Directory Exists)
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{ENV:IsAdmin} !=1
    RewriteRule e403.html - [R=404,L]
</IfModule>

Нужно написать 404 страницу.(Страница 403 не нужна)

<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>Not Found</h1>
<p>The requested URL /admin/ was not found on this server.</p>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...