2011-12-21 24 views
8

Estoy intentando crear un acortador de URL y quiero poder tomar cualquier carácter inmediatamente después del dominio y hacer que se transmita como una URL variable. Así, por ejemploRedirecciona todo el tráfico a index.php usando mod_rewrite

se convertiría en

Esto es lo que tengo para mod_rewrite en este momento, pero seguir recibiendo un 400 Bad Request:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) index.php?url=$1 [L,QSA] 
+1

Mire en el 'error.log' por el motivo real del error. De lo contrario, configure el 'RewriteLog' – mario

+1

posible duplicado de [Simple Mod Rewrite] (http://stackoverflow.com/questions/7093190/simple-mod-rewrite) – mario

+0

-1: se requiere más depuración; ver el comentario de @mario –

Respuesta

11

intentar sustituir ^(.*) con ^(.*)$

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

Editar: Intente reemplazar index.php con /index.php

RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA] 
+0

Le di una oportunidad, pero igual recibo la Solicitud Mala de 400. Mirando a través de los registros ahora, pero parece que no puedo encontrar nada que valga la pena – bswinnerton

+1

@bswinnerton: Intenta agregar un '/' antes de 'index.php'. Verifique mi respuesta actualizada. –

+0

Bien, entonces ya no consigo el error, pero no redirecciona a url = asdf cuando escribo/asdf =/ – bswinnerton

0

intentar hacerlo sin usar usando RewriteCond.

+0

Si comento el RewriteCond, sigo recibiendo el error 400. – bswinnerton

+2

Esas dos líneas 'RewriteCond' son para asegurarse de que los archivos y carpetas que realmente existen no se vuelvan a escribir. Por ejemplo 'http: // example.com/images/logo.png' no se reescribirá si esa imagen existe. –

+0

@Rocket Información útil para referencia futura. Estaba trabajando con la información que me dieron. – PseudoNinja

-1

check menos de módulos de Apache y asegúrese de que la reescritura del módulo está activado. Tuve un problema similar y se resolvió habilitando el módulo de reescritura.

+0

¿Para qué sirve responder a una vieja pregunta ** que ya ha sido respondida **? –

1

Bytheway no se olvide de activar mod reescribir, en Apache en Ubuntu

sudo a2enmod rewrite 

y luego reiniciar apache2

sudo /etc/init.d/apache2 restart 

edición: es una vieja pregunta que me ayudó pero perdió horas probando mi archivo apache2.conf en un lado y el archivo .htaccess en el otro lado y aún sin luz.

0

volver a escribir todas las solicitudes de /index.php, puede utilizar:

RewriteEngine on 


RewriteCond %{REQUEST_URI} !^/index.php$ 
RewriteRule ^(.+)$ /index.php?url=$1 [NC,L] 

El RewriteCondition RewriteCond %{REQUEST_URI} !^/index.php$ es importante ya que excluye el destino de reescritura estamos reescribiendo a error y evita un bucle infinito.

Cuestiones relacionadas