В моем .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) находится внутри папки проекта.