Я пытаюсь изменить домашнюю страницу своего сайта, но ничего не происходит. При вводе кода ниже «DirectoryIndex index.html # сделать index.html индексом» моя домашняя страница остается прежней. Я вношу изменения в файл в .htaccess
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^index.php - [L]
RewriteRule ^index.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
#RewriteRule ^(.*)$ index.php [QSA,L]
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
DirectoryIndex index.html #to make index.html as index
Мой сайт написан на php, и я хочу поместить домашнюю страницу в html.
RewriteRule ^(.*)$ index.php [QSA,L]
Измените квантификатор *
на +
, чтобы он соответствовал только непустым URL-путям, чтобы документ DirectoryIndex
(т. е. index.html
) обслуживался для запросов на домашнюю страницу вместо передачи запроса фронт-контроллеру ( то есть index.php
). Или просто используйте точку (.
) в качестве регулярного выражения, поскольку вы ничего не делаете с захваченным URL-путем. Например:
RewriteRule . index.php [L]
(Флаг QSA
здесь не требуется.)
Хотя, поскольку вы используете шаблон переднего контроллера (т. е. направляете все запросы на index.php
), вам, вероятно, следует вместо этого настроить соответствующий ответ для обслуживания от index.php
?
В стороне:
DirectoryIndex index.html #to make index.html as index
Вы должны удалить, то, что вы считать является комментарием в конце строки, т.е. "#to make index.html as index
". На самом деле это не комментарий. Apache не поддерживает комментарии в конце строки (поддерживаются только полнострочные комментарии). В этом случае #to
, make
, index.html
, as
и index
будут рассматриваться как дополнительные аргументы директивы DirectoryIndex
(так что на самом деле вы не получите ошибку).
См. мой ответ на следующий вопрос об использовании комментариев в конце строки:
Ошибка 500: .htaccess RewriteCond: разделители неверных флагов
Обновлено:
Вместо этого попробуйте следующее (это заменяет файл весь.htaccess
выше):
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^index\.(php|html)$ - [L]
# Rewrite any request for anything that is not a file to "index.php"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
# Rewrite the homepage only to "index.html"
RewriteRule ^$ index.html [L]
Обертка <IfModule>
не требуется. (Это ваш сервер, поэтому вы знаете, включена ли mod_rewrite или нет, и эти директивы необязательны.)
Перед тестированием убедитесь, что вы очистили кеш браузера.
Хорошо, так оно и было. Но до сих пор никаких изменений на главной странице :(
@IgorBorges Что вы подразумеваете под «так было»? Должно быть DirectoryIndex index.html
(а не index.html as index DirectoryIndex
как на скриншоте?)
Нет, я говорю, что сделал именно то, что вы ответили, но это все равно не сработало...
@IgorBorges Я обновил свой ответ альтернативным решением.
Идеальный! Это сработало. Спасибо большое друг!
«пытается изменить домашнюю страницу» — этим я предполагаю, что вы пытаетесь обслуживать
index.html
запросы к корню документа (т. е. домашней странице), вместо того, чтобы направлять запросы кindex.php
?