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

Перенаправление в папку моего проекта 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]

решение1

Я ожидал, что он перенаправит меня в папку моего проекта /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файлах per-directory. И если вы не используете строку запроса, то флаг QSAможно также убрать.

решение2

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

Связанный контент