No funciona nada de lo que hago con Rewrite (.htaccess)

Iniciado por Poliformado, 11 Febrero 2012, 17:05 PM

0 Miembros y 2 Visitantes están viendo este tema.

#!drvy

Jeje, me alegro de que te haya funcionado.

Lo cierto es que un .htaccess es una cosa muy sensitiva. Me refiero a que al mínimo error deja de funcionar, tambien se debe a que usa expresiones regulares.
Precisamente en las expresiones regulares, la barra inclinada hacia la izquierda (\) es un escape que puede dejar todo inservible.


Saludos

jhonc350

Buenos dias estoy teniendo el mismo problema tuyo ya he probado de mil maneras la forma de que no me muestre la extensión yo uso appserv y me ha sido totalmente imposible hacer que esto funcione me podrias enviar el archivo que envio dryv para probarlo a ver si con esto por fin puedo solucionar de nuevo este inconveniente que ya me tiene desesperado gracias.

#!drvy

Hola jhonc350,

Fíjate en en mi ultimo mensaje en este tema. Ahí he dejado el código que le ha funcionado a Poliformado.

El link de descarga no funciona pero no te debería de hacer falta. Recuerda ponerlo en el directorio principal.


Saludos



estierkol

Hola drvy, sabes que me ha funcionado el codigo pero tengo el problema para que entre a los demas directorios, me podrias hechar una mano, no lo he podido solucionar, alomejor me falta alguna expresion regular no lo sé,,,

poliformado: si lo solucionaste podrías ayudar como lo solucionaste para la navegacion de los demas directorios???

Saludos

#!drvy

Buenas @estierkol, lo que le hace falta al script es agregar la barra inclinada (/) en la lista "blanca" para que funcione con directorios. Te de dejo el codigo solucionado.

Código (apache,14) [Seleccionar]
<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On

RewriteBase /

# Si el archivo no es un directorio
RewriteCond %{REQUEST_FILENAME} !-d

# "Redirigir" normal cualquier numero,letra y barra (-)
# y no hacer nada mas.
RewriteRule ^([A-Za-z0-9-\/]+)/?$ $1.php [L]

# Si la consulta tiene extension .php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.php\ HTTP

# Y no es un directorio
RewriteCond %{REQUEST_URI} !-d

# Rediregimos a la misma consulta sin el .php
RewriteRule ^(.+)\.php$ $1 [L,R=302]

</IfModule>


Saludos

estierkol

Gracias por responder drvy   ;D
Te cuento, el codigo al parecer funciona, me elimina los .php, pero por alguna manera no viajan las variables, te explico
tengo mi primera pagina que es el host/index.php que es un login de usuario, al introducir el usuario y la contraseña y al hacer submit, las variables se van a host/verifica.php quien hace la consulta a la base de datos y inicia el session_star y me redirecciona a la pagina de host/inicio.php

Entonces con el codigo que me diste llega a host/verifica que inpeccionando el elemento lo redirecciona correctamente a host/verifica.php, pero llegan solo las equitetas html y body vacias sin nada de codigo dentro, no se que estare haciendo mal   :-\

por otra parte tengo apache 2.2 y el codigo es ignorado en .htaccess, por lo que lo agrego dentro del directorio de sites-enables, en el archivo de mi sitio, aca el codigo

Código (apache) [Seleccionar]

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        <Directory />                     ### aqui he puesto el codigo es la unica parte que no es ignorado
                Options +FollowSymLinks
                RewriteEngine On
                RewriteBase /
                # Si el archivo no es un directorio
                RewriteCond %{REQUEST_FILENAME} !-d
                # "Redirigir" normal cualquier numero,letra y barra (-)
                # y no hacer nada mas.
                RewriteRule ^([A-Za-z0-9-\/]+)/?$ $1.php [L]
                # Si la consulta tiene extension .php
                RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.php\ HTTP
                # Y no es un directorio
                RewriteCond %{REQUEST_URI} !-d
                # Rediregimos a la misma consulta sin el .php
                RewriteRule ^(.+)\.php$ $1 [L,R=302]
                #Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options -ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


Como puedes ver ese es mi problema no se que tengo mal, en el info.php, tengo cargado el modulo mod_rewrite, la codificacion esta en utf-8, tanto en apache mysql y php.

Haber si me hechas una mano ya estoy re achacado llevo 2 días tratando de encontrar la solucion y ahora que la encuentro, me falla lo que te comento,,,,

Saludos

#!drvy

Hola,
No te acabo de entender.

Primero, que tipo de variables ? GET o POST ?

Una cosa muy importante que tienes que tener en cuenta, es que el htaccess hace una redireccion. Osease, si tu envías los parámetros desde index.php (con el .php), htaccess redirecciona y pierdes todo.

Asegúrate que cuando envías los datos y cuando redireccionas desde tu script, estas usando los archivos sin la extensión.

Saludos

lupita palomar

Buenas tardes ami me ha funcionado lo ultimo que pusiste me podrias ayudar con esto soy nueva en esto de htacess, mi direccion es
localhost/prueba/modulo/operacion/compra/hola.php
pero quiero que quede asi
localhost/prueba/operacion/compra/hola
quiero quitar /modulo de la url hasta aurita me quita el .php de mis archivos y funciona pero como puedo hacer esto?
plis ayuda