mod rewrite - mod_rewrite - Configuración Lighttpd,.(puntos) en mi secuencia de consulta causa 404
mod_rewrite ubuntu (2)
Tengo una dirección en mi sitio así:
En este ejemplo, el punto en la parte ''gigaom.com'' de la cadena de consulta está jodiendo con lighttpd y mis reglas de reescritura. Obtengo un 404 con el punto adentro, no 404 si saco el punto. Mis reglas de reescritura están a continuación. En caso de que haga una diferencia, estoy usando Symfony 1.4.
Si alguien pudiera arrojar algo de luz sobre este problema, ¡sería muy apreciado!
url.rewrite-once = (
"^/(.*/..+)$" => "$0",
"^/(.*)/.(.*)" => "/index.php",
"^/([^.]+)$" => "/index.php/$1",
"^/$" => "/index.php"
)
Para cualquier persona que tenga problemas con lighttpd y symfony (sé que estás ahí fuera, porque hay muchos hilos sin resolver sobre el tema) terminé resolviéndolo y respondiéndolo a continuación.
De acuerdo, entonces después de mucha depuración con la ayuda de:
debug.log-request-handling = "enable"
^^ ¡Este es un salvavidas para cuando tratas de depurar reglas de reescritura en lighttpd! (registró todo para mí en /var/log/lighttpd/error.log)
Lo he descubierto. Para todas aquellas personas que tienen problemas para hacer que Symfony funcione con lighttpd (¡incluido el problema de los puntos!), Aquí hay un conjunto de reglas que funcionan:
url.rewrite-once = (
"^/(js|images|uploads|css|sf)/(.*)" => "$0", # we want to load these assets as is, without index.php
"^/[a-zA-Z_-]+/.(html|txt|ico)$" => "$0", # for any static .html files you might be calling in your web root, we don''t want to put the index.php controller in front of them
"^/sf[A-z]+Plugin.*" => "$0", # don''t want to mess with plugin routes
"^/([a-z_]+)/.php(.*)/.(.*)$" => "/$1.php$2.$3", # same concept as rules below, except for other applications/environments (backend.php, backend_dev.php, etc)
"^/([a-z_]+)/.php([^.]*)$" => "/$1.php$2", # see comment right above this one
"^/(.*)/.(.*)$" => "/index.php/$1.$2", # handle query strings and the dot problem!
"^/([^.]+)$" => "/index.php/$1", # general requests
"^/$" => "/index.php" # the home page
)
Si alguien tiene más problemas, publique aquí. ¡Gracias!
Estoy usando PHP, MySQL y .htaccess para las reglas de reescritura. Solo compartir para que otros también puedan beneficiarse.
Mi regla anterior:
RewriteRule ^([^//.]+)/([^//.]+).html$ detail.php?name=$1&id=$2 [L]
Estaba trabajando con este resultado: http://www.sitecliff.com/Yahoo-UK/4.html
Quería el nombre del sitio web en lugar del título en la url. Después de navegar por la red, descubrí que el punto está causando el problema como mencionaste anteriormente.
"^/(.*)/.(.*)$" => "/index.php/$1.$2", # handle query strings and the dot problem!
Entonces cambié la regla a:
RewriteRule ^([^/]+)$ detail.php?url=$1 [L]
Después de esto, obtuve el resultado deseado: http://www.sitecliff.com/yahoo.com