rewriterule mod_rewrite ifmodule htaccess ejemplos apache .htaccess mod-rewrite

apache - mod_rewrite - htaccess eliminar index.php de url



mod_rewrite htaccess (6)

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.


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 - 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: -

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index/.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>

  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

<Directory /var/www/html> AllowOverride All </Directory>

Reinicie su servidor Apache

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


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


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