htacess redireccionando a archivos js y css
Esta es mi estructura típica de PHP MVC:
-Resources
--/my.css
--/my.js
-Project
--/.htaccess
--/index.php
--/Other Files & Folders
Esta es mi configuración de htaccess:
Options -Indexes
#AddHandler application/x-httpd-php53 .php .php5 .php4 .php3
RewriteEngine on
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC] RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
Escriba ahora que todas mis solicitudes pasan por index.php. En mis archivos de proyecto, estoy accediendo a mis archivos css y js ubicados en la carpeta de Recursos como sigue:
<link rel="stylesheet" type="text/css" href="/../Resources/my.css"/>
<script src="/../Resources/my.js"></script>
Este resultado en el siguiente error
HTTP/1.1 404 Not Found 258ms
Intenté agregar la siguiente regla de reescritura en la configuración de htaccess, pero no funciona:
RewriteCond %{REQUEST_URI} ^/Resources/my.css
RewriteRule ^api(.*)$ ../Resources/my.css [NC,QSA,L]
No quiero cambiar la estructura de mi carpeta, ya que los mismos recursos CSS y JS se comparten entre varios proyectos, y es fácil administrarlos desde una sola ubicación. Solo quiero hacer referencia a ellos de alguna manera.
Tampoco quiero incluir el código en mi archivo de proyecto, como: include('../Resources/my.css')
en PHP, no quiero esto.
Proporcione una solución a esto. Gracias y saludos
Respuestas
Para nosotros, es una especie de función no escrita colocar siempre los activos en subdirectorios del directorio raíz (el directorio que contiene el index.php
archivo es raíz).
De todos modos, no puede volver a escribir fuera de la raíz del documento. Esto es una cuestión de seguridad, y piénselo, ¿ example.com/../my-dir
tiene algún sentido?
Una solución alternativa (como en otra publicación ) sería crear un enlace de símbolo a su Resources
directorio, asígnele un nombre y mySymbolLink
luego podría hacer:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^Resources/.*
RewriteRule ^Resources/(.*)$ /mySymbolLink/$1 [QSA,L]
</IfModule>
Pero aún necesita cambiar las rutas, por ejemplo, /../Resources/my.js
debería /Resources/my.js
funcionar.
Bueno, como otros también han señalado en comentarios y respuestas, esto NO ES POSIBLE . No podemos referirnos arriba o fuera de nuestra raíz del proyecto desde la secuencia de comandos del lado del cliente. Podemos hacer cosas desde la codificación del lado del servidor, pero el código del lado del cliente, no es posible /