Как изменить REQUEST_URI, используя .htaccess? - PullRequest
1 голос
/ 19 января 2012

У меня есть такая структура папок:

/ WWW / проект / веб / app.php

Я могу получить к нему доступ через /project/web/index.php. Проблема в том, что я не хочу, чтобы web/ был частью URL. Это должно быть /project/index.php.

С этим .htaccess в папке /www/project/:

RewriteEngine On

RewriteRule ^ (. *) $ Web / index.php [L]

Кажется, он перенаправляется к правильному файлу при доступе через /project/foo/bar, однако REQUEST_URI остается неизменным и равен /project/index.php/foo/bar, что ломает многие вещи.

Как я могу изменить REQUEST_URI, чтобы не содержать project?

Проще говоря:

/ WWW / проект / .htaccess

RewriteEngine On
RewriteRule ^(.*)$ web/index.php [L]

При доступе к URL /project/foo/bar правильно перенаправляется на index.php, но приложение завершается ошибкой, поскольку REQUEST_URI содержит /project/foo/bar вместо /foo/bar. project - это папка, которая не должна быть частью запроса.

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Попробуйте добавить следующее к вашему /www/project/.htaccess

RewriteEngine on
RewriteBase /project/

#first, if project/web or web or just project is present, redirect and remove them
RewriteRule ^(project/web/|web/|project/)(.*)$ $2 [L,R=301]


#next, rewrite all requests to web/index.php
RewriteRule ^(.*)$ web/index.php [L]
2 голосов
/ 19 января 2012

Чтобы изменить URI, вы должны использовать флаг R для перенаправления, ваше текущее правило будет перенаправлять только внутренне, сохраняя тот же URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...