it-swarm.com.ru

Переадресация .htaccess из корня сайта в общую папку, скрытие "публичного" в URL?

Ниже приведена структура каталогов моего сайта: 

htdocs/
    My-Project/
        public/
            index.php
            css/
            img/
            js/
        src/
            config.php
            templates/
            library/

Я не хочу прямого доступа пользователей к любым файлам в каталоге src. src содержит мои шаблонные и бэкэнд-логические скрипты.

Я хочу настроить свой .htaccess таким образом, чтобы при переходе пользователя на мой веб-сайт (корневая папка My-Project) он перенаправлялся на My-Project/public/index.php. Я хотел бы, чтобы URL-адрес просто выглядел как My-Project.com на странице индекса.

Любая помощь? Я не решаюсь изменить мой файл .htaccess, так как вижу много противоречивых советов здесь и в сети относительно лучшего способа сделать это.

15
Prefix

Поместите этот код в /My-Project/.htaccess:

RewriteEngine On
RewriteBase /My-Project/

RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]

RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
32
anubhava

Добавьте следующее в первую строку вашего .htaccess

DirectoryIndex public/index.php public/index.html
8
daxeh

Я внес некоторые изменения в ответ @ anubhava на работу с localhost и с дружественными URL-адресами.

Структура каталогов:

  • / (локальная корневая папка)
    • myApp /
      • общественности /
      • index.php
    • ядро /
      • некоторые основные файлы ...

myapp/.htaccess (корневая папка myapp)

RewriteEngine On
RewriteBase /myapp

RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^(.*)$ public/index.php?$1 [L,QSA]

myapp/public/.htaccess

RewriteEngine On
RewriteBase /

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

myapp/public/index.php

<?php
echo 'Hello<br>';
echo $_SERVER['QUERY_STRING'];

Некоторые запросы:

http: // localhost/myapp/

Привет


http: // localhost/myapp/post/new

Привет 

сообщение/новый

1
SandroMarques