Скрытие папки с помощью htaccess

У меня есть эта структура в моем PHP-скрипте

псевдоним корневой папки htdocs
- > backend/..
- > frontend/..
- > index.php
- > login.php

Однако я хотел бы сделать систему более безопасной, поэтому думаю о том, чтобы скрыть /backend от URL-адреса. Админ находится внутри /backend, например /backend/managerusers.php

В настоящее время пробовал следующее решение

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !(.*)backend 
RewriteRule ^(.*)$ backend/$1 [L]

Но это не сработало. Если я удалил /backend, файл index.php в корневой папке (htdocs) зациклился.


person Marcell    schedule 09.01.2017    source источник
comment
Не совсем понятно, что вы на самом деле пытаетесь получить в качестве цели. Правило выглядит так, как будто вы пытаетесь перезаписать в папку /backend, что противоречит вашему описанию...   -  person arkascha    schedule 09.01.2017
comment
Итак, что бы вы хотели, если бы managerusers.php был файлом, существующим как во внешнем, так и в бэкенде?   -  person MonkeyZeus    schedule 09.01.2017
comment
Теперь я в замешательстве, что вы предпочитаете в этом случае?   -  person Marcell    schedule 09.01.2017
comment
@arkascha я хотел бы удалить бэкэнд из URL :) ex:. localhost/backend/index.php на localhost/index.php   -  person Marcell    schedule 09.01.2017


Ответы (2)


Вы можете использовать эти правила:

Options +FollowSymLinks
RewriteEngine on

# To externally redirect /backend/index.php to /backend/index.php
RewriteCond %{THE_REQUEST} \s/+backend/(\S*) [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# To internally rewrite /index.php to /backend/index.php
RewriteRule ^(?!backend/|login)(.*)$ backend/$1 [L,NC]
person anubhava    schedule 10.01.2017
comment
все еще дает цикл перенаправления :( (если вы вошли в систему, проблем нет, так как /backend кажется скрытым, но если я выхожу из системы и посещаю страницы входа, это делает цикл.. - person Marcell; 10.01.2017
comment
хм, может быть, дайте мне проверить :( - person Marcell; 10.01.2017
comment
на самом деле работал нормально, но я не смог использовать функцию входа в систему. (login.php в корневом каталоге) Но внутренняя папка исчезла и не получила цикл перенаправления... - person Marcell; 10.01.2017

Попробуйте использовать это:

RewriteEngine On
RewriteRule ^backend/(.*)$ /$1 [L,R=301]

Это должно удалить backend из ваших URL-адресов. Пожалуйста, убедитесь, что вы очистили кеш, прежде чем тестировать это.

person Joe    schedule 09.01.2017
comment
Еще один вопрос, прежде чем что-то менять. Должен ли я размещать .htaccess в корневой или внутренней папке? - person Marcell; 09.01.2017
comment
Нет причин, по которым это должно зацикливаться. У вас есть что-нибудь еще в вашем .htaccess, что может конфликтовать? - person Joe; 09.01.2017
comment
нет, это очень новая и свежая система :) могут быть проблемы, если в корневой папке действительно есть index.php? - person Marcell; 09.01.2017
comment
Ах, хорошо, закомментируйте другой раздел, чтобы проверить это. Это поможет вам увидеть, вызывает ли это проблему или нет. - person Joe; 09.01.2017
comment
404 .. :D значит проблема - person Marcell; 09.01.2017
comment
Вы не включаете Options +FollowSymLinks, не так ли? - person Joe; 09.01.2017
comment
Нет, я должен? - person Marcell; 09.01.2017
comment
Нет, я просто проверял. - person Joe; 09.01.2017