htaccess eliminar index.php de url

Tengo un problema por el cual Google ha indexado algunas páginas con la URL incorrecta.

La url que están indexando es:

http://www.example.com/index.php/section1/section2 

Necesito redireccionar a:

 http://www.example.com/section1/section2 

.htaccess no es mi fuerte, por lo que cualquier ayuda sería muy apreciada.

Gracias por adelantado.

Esta es la regla básica para ocultar index.php de la URL. Coloque esto en su archivo raíz .htaccess .

mod_rewrite debe estar habilitado con PHP y esto funcionará para la versión PHP superior a 5.2.6.

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L] 

Para eliminar index.php de la URL, y para redirigir al visitante a la versión no index.php de la página:

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

Esto redirigirá limpiamente /index.php/myblog a simplemente /myblog .

El uso de una redirección 301 preservará las clasificaciones de los motores de búsqueda de Google.

 RewriteEngine On RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /(.*)index\.php($|\ |\?) RewriteRule ^ /%1 [R=301,L] 

Suponiendo que la url existente es

 http://example.com/index.php/foo/bar 

y queremos convertirlo en

  http://example.com/foo/bar 

Puedes usar la siguiente regla:

 RewriteEngine on #1) redirect the client from "/index.php/foo/bar" to "/foo/bar" RewriteCond %{THE_REQUEST} /index\.php/(.+)\sHTTP [NC] RewriteRule ^ /%1 [NE,L,R] #2)internally map "/foo/bar" to "/index.php/foo/bar" RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ /index.php/$1 [L] 

En la spep # 1, primero coincidimos con la cadena de solicitud y capturamos todo después de /index.php/ y el valor capturado se guarda en % 1 var. Luego enviamos el navegador a una nueva url. El # 2 procesa la solicitud internamente. Cuando el navegador llega a / foo / bar , # 2rule reescribe la nueva url en la ubicación original.

Haz los siguientes pasos

1. Asegúrate de que el módulo mod_rewrite del hosting / tu pc esté activo. si no está activo, intente activarlo de alguna manera, abra el archivo httpd.conf. Puede verificar esto en phpinfo.php para averiguarlo.

cambiar esta configuración:

 #LoadModule rewrite_module modules/mod_rewrite.so 

ser y reiniciar wamp

 LoadModule rewrite_module modules/mod_rewrite.so 

2. Luego ve al archivo .htaccess e intenta modificar para que sea:

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA] 

si arriba no funciona, intente con esto:

 RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php 

3. Mueva el archivo .htaccess al directorio raíz, donde está index.php allí.

 www OR root folder - index.php - .htaccess 

Pasos para eliminar index.php de la url para su sitio web wordpress.

  1. Compruebe que debe tener mod_rewrite habilitado en su servidor. Para comprobar si está habilitado o no: cree 1 archivo phpinfo.php en su carpeta raíz con el siguiente comando.
  < ?php phpinfo?(); ?> 

Ahora ejecute este archivo – http://www.yoursite.com/phpinfo.php y mostrará mod_rewrite en la sección Cargar módulos. Si no está habilitado, realice los comandos siguientes en su terminal.

 sudo a2enmod rewrite sudo service apache2 restart 
  1. Asegúrese de que .htaccess exista en su carpeta raíz de WordPress; si no, cree un archivo .htaccess Pegue este código en su archivo .htaccess: –
   RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  
  1. Además, solicite permiso de .htaccess al 666 para que se pueda escribir y ahora puede hacer cambios en sus enlaces permanentes de WordPress.

  2. Ahora vaya a Configuración -> enlaces permanentes -> y cambie a su formato de url necesario. Elimine este código /index.php/%year%/%monthnum%/%day%/%postname%/ e inserte este código en Custom Structure: /% postname% /

  3. Si todavía no se logró, entonces verifica tu hosting, el mío era el servidor digitalocean, así que lo borré yo mismo

Editado el archivo /etc/apache2/sites-enabled/000-default.conf

Se agregó esta línea después de DocumentRoot / var / www / html

   AllowOverride All  

Reinicie su servidor Apache

Nota: / var / www / html será su raíz de documento

Algunos pueden obtener un 403 con el método mencionado anteriormente usando mod_rewrite. Otra solución para rewite index.php out es la siguiente:

  RewriteEngine On # Put your installation directory here: RewriteBase / # Do not enable rewriting for files or directories that exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]