2010-03-04 23 views
5

Estoy construyendo un pequeño marco PHP para los sitios web que creo y quería saber si puedo confiar en que mod_rewrite estará disponible en la mayoría de los hosters.¿Puedo confiar en mod_rewrite?

  • ¿Incluso es una buena idea usarlo? Ya hay muchos puntos buenos (un punto de entrada, URLs "legibles")

  • ¿Dónde está disponible?

  • ¿Debo incluir una alternativa en el marco si mod_rewrite no está disponible en ese hoster?

Respuesta

5

mod_rewrite está generalmente disponible. Si no está disponible en los servidores de sus anfitriones, colóquelos.

+0

Estoy hablando de los hosts de mi cliente. – someone

+0

¿Cómo cambia eso la respuesta? Todavía está disponible en general, y debe cambiar sus clientes a un host diferente si no. – ceejayoz

+0

Si sospecha que un cliente puede no tener acceso a mod_rewrite, entonces debe construir su marco basado en esa suposición. – thetaiko

2

Si está desarrollando una aplicación que está disponible al público, debería considerar que mod_rewrite podría no estar disponible y admitir una alternativa. AcceptPathInfo es uno.

+0

+1 Cuantas más opciones ofrezca, más posibilidades tendrá su producto. –

0

mod_rewrite es sólo para Apache así que si usted necesita para trabajar en IIS o alguna otra cosa que va a tener problemas, pero en PHP también puede utilizar esto:

private function getURI() 
{ 
    $uri = ""; 

    if (isset($_SERVER['PATH_INFO'])) 
     $uri = getValueFrom($_SERVER, 'PATH_INFO', @getenv('PATH_INFO')); 
    elseif (isset($_SERVER['ORIG_PATH_INFO'])) 
     $uri = getValueFrom($_SERVER, 'ORIG_PATH_INFO', @getenv('ORIG_PATH_INFO')); 
    else 
     $uri = ""; 

    $scriptname = basename($_SERVER['SCRIPT_FILENAME']); 
    if (strpos($uri, $scriptname) > -1) 
     $uri = substr($uri, strpos($uri, $scriptname) + strlen($scriptname), strlen($uri)); 

    return $uri; 
} 

Cambiar las direcciones URL es una buenas prácticas, actualy se utiliza amplia en la web y es una recomendación de SEO, porque es mejor tener esto:

domain.com/aboutus

a este

domain.com/index.php?app=main & acción = mostrar & Identificación del módulo = 1

3

El MOD_REWRITE es generalmente disponibles en las más Apache acoge estos días. Sin embargo, no es TAN difícil solucionar su ausencia, y al hacerlo, se asegura de que las personas se atasquen en un/con un equipo/personal de TI que lo desactivó, o un equipo/personal de TI que ejecuta IIS, etc.

La mayoría de los nuevos marcos o aplicaciones construidos hoy usan mod_rewrite para interceptar todas las solicitudes de URL a través de un único archivo PHP de carga frontal (llamado Bootstrapping, patrón de carga frontal, etc.). La porción de URL que no es el nombre de dominio se analiza en algún objeto, y ese objeto se usa cada vez que necesita acceder a la URL.

Cuando MOD_REWRITE no está disponible, las direcciones URL en forma de

http://example.com/index.php/foo/baz/bar 

se utilizan en su lugar. La solicitud de la URL anterior se maneja mediante el archivo index.php. A continuación, puede analizar una de las variables de servidor como los

$_SERVER['REQUEST_URI'], $REQUEST['PATH_INFO'], etc. 

en algún objeto (el mismo objeto que tendría que utilizar si tiene que mod_rewrite) y utilizar ese objeto cada vez que necesita acceso a la información de la URL.

De cualquier manera, el resto de su marco/aplicación simplemente accede al objeto, y no tiene que preocuparse por cómo llegó la información allí.

Additional Reading

0

Está disponible en la mayoría de los servidores - pero si usted sospecha que no lo es, se debe hacer de una manera dinámica en busca de enlaces - usted podría entonces tener una constante predefinida que se modifica antes de todo lo que dice si o no mod_rewrite está disponible. A continuación, puede buscar las URL usando esa constante para determinar qué sucede.

0

Creo que cualquier aplicación decente debería hacer uso de mod_rewrite, y la mayoría de los servidores web están ofreciendo esto. Si no ofrecen, bájese de ellos.

Además, no sólo mod_rewrite es una buena opción para usar, sino también otras configuraciones de PHP como este php_valuemax_execution_time y así sucesivamente para asegurarse de que está personalizando su entorno para adaptarse a su finalidad de uso.