Удалить public при использовании $ _GET с htaccess или PHP

1

Я учусь создать свою собственную PHP MVC Framework. Вот мой URL-адрес: http://www.mvc.dev/public/controller/methold/params

Для получения текущего URL-адреса я использую следующую функцию. Следующая функция возвращает public/test1/test2/test3. Я не хочу, чтобы public показывала.

function parseUrl(){
  if( isset($_GET['url']) ){
    echo $_GET['url'];
  }
}

.htaccess Делает URI в строку запроса

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /public

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>

Пожалуйста, помогите, как я могу удалить public из public/test1/test2/test3.

  • 0
    Я предполагаю, что вы просто делаете это для целей тестирования, но в вашей производственной среде вы никогда не должны echo какую-либо предоставленную пользователем информацию непосредственно в браузер (например, echo $_GET['url']; ) без ее правильного экранирования.
Теги:
.htaccess
mod-rewrite

1 ответ

1
Лучший ответ

Создайте этот.htaccess в своем DocumentRoot (уровень выше public):

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

Затем вы можете использовать ссылки как http://www.mvc.dev/controller/methold/params

  • 1
    Спасибо работает отлично

Ещё вопросы

Сообщество Overcoder
Наверх
Меню