2012-02-20 10 views
20

Estoy tratando de redirigir los archivos index.php a la raíz /, he buscado alrededor y encontró varios fragmentos de código similar a:.htaccess index.php redirección a la raíz (incluidos los subdominios)

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

sin embargo, esto no funcionará para subdominios, ejemplo siguiente:

  1. tengo un subdominio: subdomain.domain.com
  2. un usuario visita http://subdomain.domain.com/index.php
  3. Uso del .htaccess por encima de ellos una re redirigido a http://www.domain.com/ en lugar de http://subdomain.domain.com/

¿Alguien sabe cómo ajustar el .htaccess por encima de lo que se tendrá en cuenta el subdominio y redirigirlos a la ubicación adecuada?

p. Ej. si un usuario visita http://subdomain.domain.com/index.php van a ir a http://subdomain.domain.com/

puntos de bonificación:

¿Hay un .htaccess que solo se puede aplicar esta regla a todas las carpetas?

Por lo que para cualquier carpeta con un index.php solo se redirigirá a su raíz, p. http://subdomain.domain.com/folder1/folder2/index.php irían automáticamente a http://subdomain.domain.com/folder1/folder2/

+0

Yo, por ejemplo, de verdad que llegue el día en que todo el mundo se da cuenta de lo que una enorme pérdida de el tiempo es esto, deja de hacerlo, y vuelve a resolver problemas reales reales. Los llamados "expertos en SEO" han desperdiciado colectivamente ** millones ** de horas de nuestro tiempo. –

Respuesta

62

Haga lo siguiente:

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

Esto funcionó muy bien, ¡gracias! Para cualquier persona con el mismo problema, si tiene un subdominio, es posible que deba seleccionar una carpeta para que se siente, asegúrese de crear/seleccionar una carpeta de public_html o este htaccess intentará redirigir a esa carpeta. p.ej. tengo subdomain.domain.com que tenía sus archivos almacenados en www.domain.com/subdomain, este htaccess enviaría a los usuarios a subdomain.domain.com/subdomain cada vez que visitaran subdomain.domain.com/index.php pero si coloca la carpeta fuera de public_html no obtienes este problema. – Alex

+0

@ThinkingMonkey ¿Podría corregir el punto en el regex 'index.php'? Creo que intentaste escribir 'index \ .php' :) – caiosm1005

+0

@ caiosm1005 tienes razón. Hizo la corrección – ThinkingMonkey

7

que basa el código siguiente en @ThinkingMonkey's answer

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

Se redirige URI terminando con index.php, index.htm o index.html a / . Funciona con subdirectorios, también.

Además, observe la bandera NC. Lo hace insensible a mayúsculas/minúsculas. Por lo tanto, funciona incluso si el URI está en mayúsculas, como INDEX.PHP.

-1

se puede utilizar este

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

Eso ciertamente parece ser exactamente lo contrario de lo que se solicitó. –

+0

Esta es la mejor solución. Otros trabajos solo si tiene domain.ext/index.php pero no funciona para 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] 

Mi versión basada en ThinkingMonkey y caiosm1005 respuestas :)

Cuestiones relacionadas