2012-02-20 2 views
20

Я пытаюсь перенаправить index.php файлы в корневой /, я искал вокруг и нашел несколько фрагментов кода, похожие на:Htaccess редирект 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/

+0

Я, например, действительно с нетерпением жду того дня, когда все понимают, что огромная трата это время, перестает это делать и возвращается к решению реальных реальных проблем. Так называемые «эксперты по SEO» коллективно потратили впустую ** миллионы ** часов нашего времени. –

ответ

62

ли это:

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

Это отлично поработало, спасибо! Для тех, у кого есть такая же проблема, если у вас есть субдомен, вам может потребоваться выбрать папку, в которой он будет сидеть, убедитесь, что вы создаете/выбираете папку из public_html или этот htaccess будет пытаться перенаправить в эту папку. например У меня есть subdomain.domain.com, у которого есть его файлы, хранящиеся на www.domain.com/subdomain, этот htaccess отправит пользователей на subdomain.domain.com/subdomain всякий раз, когда они посещают subdomain.domain.com/index.php, но если вы разместите в папке за пределами public_html вы не получите эту проблему. – Alex

+0

@ThinkingMonkey Не могли бы вы исправить точку в регулярном выражении 'index.php'? Я считаю, что вы намеревались написать 'index \ .php' :) – caiosm1005

+0

@ caiosm1005, вы правы. Была ли коррекция. – ThinkingMonkey

7

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

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

перенаправляет URIs заканчивая index.php, index.htm или index.html до / , Работает и с подкаталогами.

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

-1

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

RewriteRule ^index\.php/(.*)$ http://www.example.com/$1 [R=301,L] 
+0

Это, несомненно, является полной противоположностью запрошенного. –

+0

Это лучшее решение. Другое работает, только если у вас есть domain.ext/index.php, но не работает для doamin.ext/index.php/some_argument/-> domain.ext/some_argument /. –

-1
RewriteCond %{THE_REQUEST} ^.*/index\.(php|html?) [NC] 
RewriteRule ^(.*)index.(php|html?)$ /$1 [R=301,NC,L] 

Мой вариант, основанный на ThinkingMonkey и caiosm1005 ответы :)

Смежные вопросы