htaccess перенаправляет index.php в корневой каталог (включая поддомены) - PullRequest
28 голосов
/ 21 февраля 2012

Я пытаюсь перенаправить файлы index.php в корень /, я искал вокруг и нашел несколько фрагментов кода, подобных:

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule ^(.*)index.php$ http://www.domain.com/$1 [R=301,L] 

Однако это не будет работать для поддоменов, пример ниже:

  1. У меня есть поддомен: subdomain.domain.com
  2. Пользователь посещает http://subdomain.domain.com/index.php
  3. Используя вышеописанный htaccess, они перенаправляются на http://www.domain.com/ вместо http://subdomain.domain.com/

Кто-нибудь знает, как настроить вышеописанный htaccess, чтобы он учитывал поддомен и перенаправлял их в соответствующее место?

например. если пользователь посещает http://subdomain.domain.com/index.php, он перейдет на http://subdomain.domain.com/

Бонусные баллы:

Существует ли htaccess, который может просто применить это правило ко всем папкам?

Так что для любой папки с index.php они будут просто перенаправлены в ее корень, например http://subdomain.domain.com/folder1/folder2/index.php автоматически перейдет к http://subdomain.domain.com/folder1/folder2/

Ответы [ 3 ]

75 голосов
/ 21 февраля 2012

Сделайте это:

RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 
12 голосов
/ 16 сентября 2013

Я основал следующий код на @ ответе ThinkingMonkey

RewriteRule ^(.*)index\.(php|html?)$ /$1 [R=301,NC,L]

Перенаправляет URI, заканчивающиеся на index.php , index.htm или index.html до / .Также работает с подкаталогами.

Также обратите внимание на флаг NC.Это делает его без учета регистра.Так что это работает, даже если URI указан в верхнем регистре, например INDEX.PHP .

0 голосов
/ 28 августа 2014

Можно использовать это

RewriteRule ^index\.php/(.*)$ http://www.example.com/$1 [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...