RewriteRule pour les fichiers statiques dans le sous-dossier

J’ai la structure de dossier suivante pour mon site Web:

index.php .htaccess public_html/css/* (css files) public_html/images/* (image files) public_html/js/* (javascript files) 

Tous les fichiers statiques du sous-dossier public_html sont liés dans mes fichiers de page sans public_html: par exemple /images/logo/logo.png

J’ai configuré le fichier .htaccess suivant, qui fonctionne correctement sur mon apache local et sur mon espace Web, mais sur l’espace Web des clients, cela ne fonctionne pas:

 RewriteEngine On RewriteBase / RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f RewriteRule ^(.*)$ /public_html/$1 [L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond ${REQUEST_URI} ^/public_html/ RewriteRule .* - [L] RewriteRule ^ index.php [QSA,L] 

Cette ligne

 RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f 

doit être réécrit (2 possibilités)

 RewriteCond %{DOCUMENT_ROOT}/public_html%{REQUEST_URI} -f # or RewriteCond %{DOCUMENT_ROOT}/public_html/$1 -f 

De plus, vous n’avez pas besoin de slash / before public_html dans RewriteRule puisque vous l’avez déjà défini dans RewriteBase .

Ensuite, cette ligne

 RewriteCond ${REQUEST_URI} ^/public_html/ 

doit être réécrit pour

 RewriteCond %{REQUEST_URI} ^/public_html/ 

erreur de frappe (remplacer $ par % ).

Conclusion

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_URI} ^/public_html/ [NC] RewriteRule ^ - [L] RewriteCond %{DOCUMENT_ROOT}/public_html/$1 -f RewriteRule ^(.*)$ public_html/$1 [L] RewriteRule ^ index.php [L,QSA]