je les règles de réécriture suivantes:Réécrire les règles montrant dans la barre d'adresse du navigateur
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase/
# Route all URLs to dispatch.php.
RewriteCond %{REQUEST_URI} !media/
RewriteRule ^(.*)$ dispatch.php [L]
#Route requests to /media/* to /project/media/*
RewriteRule ^media/(.*)?$ project/media/$1 [L]
</IfModule>
Tout est réécrite pour dispatch.php
à moins que l'URI commence par media/
auquel cas il va réécrire l'URI project/media/*
. Tout fonctionne bien et si je navigue vers example.com/media/css/style.css
la feuille de style qu'il a servi. Si je navigue vers example.com/media/css/
, une erreur 403 Forbidden est envoyée. Parfait!
Toutefois, si je navigue à example.com/media/css
(manque le «/» final), puis l'URL dans la barre d'adresse est réécrite pour example.com/project/media/css
et la demande est traitée par dispatch.php
. Comment puis-je empêcher ce comportement de se produire? Je voudrais qu'il soit géré par dispatch.php
mais sans projects/
étant ajouté à l'URL.
Résolue: Le problème était dû au fait que mod_dir redirigeait les URL sans barre oblique finale. Cela a entraîné l'emplacement tel qu'il apparaît sur le disque utilisé pour la redirection, ce qui signifie que le sous-dossier (projet) a été ajouté à l'URI. La .htaccess finale que j'est la suivante:
Options +FollowSymLinks +MultiViews -Indexes
Options -Indexes
<IfModule mod_dir.c>
DirectorySlash Off
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase/
#Add trailing slashes
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1/ [R=301,L]
#Route requests to /media/* to /project/media/*
RewriteRule ^media(/.*)$ project/media$1 [L]
# Route all URLs to dispatch.php.
RewriteCond %{REQUEST_URI} !^media/(.*)
RewriteRule ^(.*)$ dispatch.php [L]
</IfModule>
Le nouveau .htaccess fait la même chose que précédemment, ainsi que:
- mod_dir Inhibe.
- Ajoute des barres obliques à l'URI en utilisant une RewriteRule.
Pas besoin de créer une nouvelle question: http://stackoverflow.com/questions/2010249/redirecting-media-to-project-media-and-everything-else-to-dispatch-php –
Je vais m'assurer de ne pas recommencer, mais je pensais que le but était suffisamment différent pour exiger sa propre question. –