rewriterule rewritecond mod_rewrite htaccess ejemplos .htaccess mod-rewrite

.htaccess - rewritecond - rewriterule htaccess apache



directorio público para.htaccess (1)

Prueba esto:

RewriteCond %{DOCUMENT_ROOT}public%{REQUEST_URI} -f RewriteRule !^public/ public%{REQUEST_URI} [L]

Si desea usarlo en un subdirectorio debajo de la raíz:

RewriteCond %{REQUEST_URI} ^/subdir(/.*) RewriteCond %{DOCUMENT_ROOT}subdir/public%1 -f RewriteRule !^public/ public%1 [L]

Encontré otra solución sin nombrar explícitamente el subdirectorio:

RewriteRule ^public/ - [L] RewriteCond public/$0 -F RewriteRule .* public/$0 [L]

El cambio importante fue usar -F lugar de -f ya que el primero activa una subrequest.

Tengo una función de despachador en index.php, por lo que las URL son:

/ blog / show ir a

/index.php/blog/show

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>

¿Cómo puedo modificar esto para poder descargar todos mis archivos estáticos en un directorio público pero acceder a ellos sin público en la URL?

Por ejemplo, accesos /docs/lolcats.pdf

/public/docs/lolcats.pdf en el disco

Intenté esto

RewriteCond %{REQUEST_FILENAME} !f RewriteRule ^(.*)$ public/$1 [QSA,L]