Описание
Очень важные редиректы. Страницы дубли с index.php можно часто наблюдать в выдаче, когда забывают сделать редиректы. И как правило не на первых страницах выдачи. Также часто забывают закрывать заглушки CMS/темы/хостинга в виде index.html или index.htm
Хочу обратить внимание еще на тот факт, что проверять редиректы лучше не только для главной страницы, но и для страниц категорий, разделов. Особенно часто тут грешат многие CMS (в частности Битрикс, Drupal, Joomla) и страницы категории доступны по адресу а-ля https://site.ru/category/index.php, а то и внутри урла, как у Друпала https://site.ru/index.php/node/
Не забудьте после настройки редиректов, особенно когда убираете index.php, проверить доступность админки и других важных разделов вашего сайта, т.к. скорее всего на них также распространяется правило из htaccess и бывают случаи, что в админку невозможно попасть.
htaccess
.htaccess — перенаправление с www на не www и перенаправление на index.php
Судя по тому, что вы указали в комментариях, не требуется поддерживать два отдельных файла .htaccess
. В этом случае было бы проще поддерживать только один файл .htaccess
в корне документа (при условии, что они связаны).
Я также делаю следующие предположения о вашем «апи», что также упрощает директивы:
- Все запросы вида 9апи/. API/index.php [L]
# Переписать запросы для корневого приложения
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Правило перезаписи. index.php [Л]
Директива
RewriteBase
здесь не требуется.Обратите внимание, что сначала следует протестировать перенаправление 302 (временное), чтобы избежать возможных проблем с кэшированием. И вам, вероятно, потребуется очистить кеш вашего браузера (и любого посредника) перед тестированием.
Однако небольшое беспокойство по этому поводу (как я упоминал в комментариях) связано с реализацией канонического перенаправления запросов на ваш
/апи/
. Скрипты, отправляющие запросы к API, обычно не следуют перенаправлениям — ожидается, что эти запросы уже направляются на канонический URL-адрес. Таким образом, реализация перенаправления для этих запросов потенциально можетОбслуживание двух
Файлы .htaccess
(альтернативный вариант)В качестве альтернативы, если вы поддерживаете два отдельных файла
.htaccess
(возможно, это два несвязанных проекта). Один в корне, а другой в подкаталоге/api
, тогда вам нужно будет повторить перенаправление с www на не-www (каноническое) в обоих файлах. index\.php$ - [L] # Переписать запросы для корневого приложения RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Правило перезаписи. index.php [Л] 9индекс\.php$ - [L] # Переписываем все в API Правило перезаписи. index.php [Л]
. Как я могу это исправить? Вот мой htaccessВ отличие от исходного
/api/.htaccess
, подкаталогapi
не нужно явно указывать, поскольку мы используем относительных URL-путей (и нет необходимости в директивеRewriteBase
). Относительный URL-путь относится к каталогу, содержащему файл.htaccess
, поэтому в данном случае он относится к директиве/api
.htaccess — Мой веб-сайт продолжает перенаправлять на учетную запись «index.php» в приложении Instagram
спросил
Изменено 5 лет, 10 месяцев назад
Просмотрено 777 раз
Мой код htaccess позволяет
example. com/username
перенаправлять на любое имя пользователя в приложении Instagram. Но когда я открываюexample.com
, он перенаправляется на учетную запись Instagram под названием 9.0003 index.phpRedirectMatch 302 /(.+) instagram://user?username=$1
- htaccess
- редиректы
- глубокие ссылки
Вероятно, это связано с тем, что mod_dir выдает подзапрос для индекса каталога (т.е.
index.php
).Вы можете попробовать добавить в регулярное выражение отрицательный прогноз, чтобы исключить запросы на
index.php
. Например:RedirectMatch 302 /(?!index\.php)(.+) instagram://user?username=$1
ОБНОВЛЕНИЕ: Если теперь у вас возникла проблема с
index.html
(другой возможный индекс каталога), вы также можете исключить это:RedirectMatch 302 /(?!index\.