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.
- 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
- 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>
Además, solicite permiso de .htaccess al 666 para que se pueda escribir y ahora puede hacer cambios en sus enlaces permanentes de WordPress.
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% /
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]