Назад | Перейти на главную страницу

Перенаправление в папку моего проекта Laravel

В моем .htaccess файл. Я ожидал, что он перенаправит в папку моего проекта /hc который находится на том же уровне, что и .htaccess. Перенаправление не происходит, но все еще отображается содержимое index.html.

RewriteEngine On

RewriteBase /hc/

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L,QSA]

Я ожидал, что он перенаправит в папку моего проекта /hc который на том же уровне, что и .htaccess.

Это проблема. Если .htaccess файл находится в /hc подкаталог, тогда он никогда не увидит запрос, если вы еще не включили /hc подкаталог по запросу.

Ваш .htaccess файл должен перейти в родительский каталог. т.е. корень документа. (Кстати, вам понадобится только RewriteBase /hc/ директиве, если этот файл находился в корне документа.)

Или включите дополнительный .htaccess файл в корне документа, который просто перенаправляет все запросы на ваш /hc каталог (ваш фронт-контроллер), например:

RewriteEngine On
RewriteRule (.*) hc/$1 [L]

Обратите внимание, что поскольку mod_rewrite не наследуется по умолчанию, после перезаписи запроса в /hc подкаталог, .htaccess файл в подкаталоге затем обрабатывается и переопределяет директивы mod_rewrite в родительском .htaccess файл, так что вы не получите цикл перезаписи.


RewriteRule .* index.php?/$0 [PT,L,QSA]

ОБНОВИТЬ: Ваш замена строка в последнем RewriteRule отличается от предыдущей директивы. Оба, вероятно, неверны. Вы можете удалить ? в приведенной выше директиве, если вы не намереваетесь предоставить нам строку запроса, вам следует добавить ? к более ранней директиве. В его нынешнем виде первый использует информация о пути чтобы передать URL, второй использует Строка запроса.

Кстати, PT флаг избыточен для каждого каталога .htaccess файлы. И если вы не используете строку запроса, тогда QSA флаг также можно снять.

Вам необходимо разрешить опцию «перезаписать» в вашем конфигурационном файле apache «сайты доступны». Для laravel вы должны быть осторожны, потому что ваш DocumentRoot (общая папка, в которой вам нужен файл .htaccess) находится внутри папки проекта.