En gros, j'ai un lien dans mon html domain.com/app/css/build/app-23471942834.css
cependant sur le serveur le fichier se trouve réellement dans /fs/current/public/css/build/app-23471942834.css
. Y a-t-il un moyen de vérifier si un fichier existe dans une RewriteCondition
? Le problème est que j'ai essentiellement besoin de la partie /css/build/app-23471942834.css
pour vérifier, sans le /app
. Est-il possible d'enlever cela dans une condition?
Donc j'ai besoin de :
domain.com/app/login
doit être réécrit en/fs/current/public/login
domain.com/app/build/css/app-123523.css
doit être réécrit en/fs/current/public/build/css/app-123523.css
domain.com/app/build/js/app-123523.js
doit être réécrit en/fs/current/public/build/js/build/app-123523.css
J'utilise Laravel donc dans mon répertoire public
il y a un autre .htaccess
par défaut avec ceci:
Options -MultiViews
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Désolé, mais je suis vraiment nul en fichiers htaccess. Merci pour votre aide.
Voici ce que j'ai jusqu'à présent:
RewriteCond %{HTTP_HOST} ^(www.)?domain.de$ [NC]
RewriteCond %{DOCUMENT_ROOT}/fs/current/public/$1 -f
RewriteRule ^app/(.*)$ /fs/current/public/$1 [L]
RewriteCond %{HTTP_HOST} ^(www.)?domain.de$ [NC]
RewriteRule ^app/(.*)$ /fs/current/public/index.php?/$1 [L]
SOLUTION:
J'ai résolu mon problème de cette manière :
RewriteCond %{HTTP_HOST} ^(www.)?domain.de$ [NC]
RewriteCond %{REQUEST_URI} \.(css|jpg|gif|png|js|svg)
RewriteRule ^app/(.+)$ /fs/current/public/$1 [L]
Donc toutes les réécritures s'appliquent uniquement aux fichiers css/jpg/gif/png/js/svg. Je pense que le problème que j'avais auparavant était que le fichier index.php était également réécrit par le script.
0 votes
Que voulez-vous dire par "besoin de la
/css/build/app-23471942834.css
partie pour vérifier"? Apparemment,app-23471942834.css
n'existe jamais? Pourquoi avez-vous besoin de vérifier que la ressource existe? Ne pouvez-vous pas simplement le réécrire s'il correspond au motif? Ou est-ce juste un exemple d'un tel motif et avez-vous beaucoup d'URL/fichiers CSS et JS différents comme celui-ci?0 votes
Avez-vous plusieurs domaines/hôtes sur le même espace web? Sinon, la vérification
%{HTTP_HOST}
est inutile.