Использование htaccess для избавления от /index.php ссылка?

#regex #apache #.htaccess #mod-rewrite

#регулярное выражение #apache #.htaccess #мод-перезапись

Вопрос:

Я могу открыть свой сайт следующим образом:

 www.mysite.com
  

или вот так:

 www.mysite.com/index.php
  

Я хочу создать правило htaccess, которое перенаправляет www.mysite.com/index.php чтобы www.mysite.com . Но все мои попытки имеют другие побочные эффекты. Я пробовал:

 Redirect index.php    home.php
RewriteRule    ^index.php?$    home.php    [NC,L]
RewriteRule    ^index.php/?$    redirect_to_home.php    [NC,L]
  

Но все это портит оригинал index.php позвони. Итак, он перенаправляет, но затем обычный mysite.com ссылка больше не работает.

Есть идеи?

Ответ №1:

Не могли бы вы попробовать следовать.

 RewriteEngine On
RewriteCond  %{REQUEST_FILENAME} -f
RewriteCond %{THE_REQUEST} index.php
RewriteCond %{REQUEST_URI} ^(.*/)index.php$
RewriteRule ^ %1 [R=301,L]
  

Объяснение:

  • Создание RewriteEngine On , чтобы заставить правила работать.
  • Упоминание условия, по RewriteCond REQUEST_FILENAME которому проверяется, присутствует ли указанный файл в браузере.
  • Затем проверка, содержит ли THE_REQUEST which полную информацию о запросе (включая URL и метод GET / POST), если он имеет index.php в нем.
  • Теперь проверяем, есть ли REQUEST_URI index.php в запрошенном URL-адресе, где все сохраняется перед ним во временной буферной памяти, чтобы позже восстановить его значение (в основном, его доменное имя).
  • Наконец, RewriteRule для перенаправления полного URL с index.php использовать доменное имя только в соответствии с требованиями (R = 301 для постоянного перенаправления на стороне браузера).

Ответ №2:

Используйте это правило перенаправления для удаления /index.php с любого пути:

 RewriteEngine On

RewriteCond %{THE_REQUEST} /index.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]