Pido disculpas por adelantado si esto es demasiado largo. Me imagino que más detalles es mejor que menos y espero no estar siendo terriblemente divagante :-)¿Cómo puedo volver a escribir reglas con alias?
Uso WAMP en mi laptop para el desarrollador local, y tengo varios archivos c:/wamp/alias/*
cada uno apuntando a un directorio de trabajo del proyecto. He tenido una excelente ayuda mod_rewrite y conseguido
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*\/)?ih(\/.*)?$ $1index.php$2 [L,QSA]
a trabajar para cambiar localhost/.../ih/sub/dir
a localhost/.../index.php/sub/dir
para las direcciones URL que son SEO-friendly y corto. [No he pasado a hacer esto en prod, pero sospecho que funcionará igual de bien.] Sin embargo, para tenerlo todo junto tuve que cambiar mi raíz de documento de c:/wamp/www/
a c:/
, lo cual preferiría no hacer. solo en caso de que mi Apache sea pirateado y de lo contrario porque es un kludge.
Mi archivo de alias de prueba se parece
Alias /testme "c:/var/tmp/wamp-testme/"
<Directory "c:/var/tmp/wamp-testme/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*\/)?ih(\/.*)?$ $1index.php$2 [L,QSA]
</Directory>
y el error que consigo al intentar cargar http://localhost/testme/rewrites/ih/sub/path
es
[Thu Jun 30 06:46:13 2011] [error] [client 127.0.0.1]
File does not exist: C:/wamp/www/var
con un juego
Not Found
The requested URL /var/tmp/wamp-testme/rewrites/index.php/sub/path
was not found on this server.
en el navegador. Efectivamente, la misma configuración en mi archivo c:/wamp/alias/flying.conf
que apunta al directorio c:/data/flying/
arroja File does not exist: C:/wamp/www/data
en el archivo de registro de errores, y así sucesivamente.
Sooooo ... ¿Cómo puedo tener una regla de reescritura que trascienda los alias sin tener mi raíz de documento en el directorio raíz de mi máquina?
Gracias por la sugerencia. Intentando de nuevo con mi regla de reescritura como 'RewriteRule^(. * \ /)? Ih (\ /.*)? $ $ 1index.php $ 2 [L, QSA, PT]' todavía me da el mismo error :-( –
Hmm . Podría intentar agregar una RewriteBase: honestamente no estoy seguro de cómo interactúa con la directiva Alias, pero el error 404 podría deberse a que está asumiendo que la URL reescrita es relativa a su raíz de apache. – Femi
Parece que fue eso. Configurar la base para '/ testme /' para el caso anterior hizo el truco. ¡Sí! Intenté poner las reglas en el archivo 'httpd.conf', pero si con' RewriteBase "/" 'there o' RewriteBase "/ testme /" 'en el alias archivo no funcionó, así que estoy atascado con las reglas en cada archivo de alias. Ahora no sé si tengo que hacer funcionar esto a continuación a través de archivos '.htaccess' para que no tenga que seguir jugando con 'httpd.conf' en mi servidor de producción o ... no tendrá toda esta complejidad porque no tengo alias allí :-) [Aunque tengo fantasmas. Más experimeting ...] ¡Gracias de nuevo! –