.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]