2009-12-17 4 views
1

Je suis en train de laisser le répertoire et l'ensemble de ses sous-répertoires être accessible par l'URL http://www.domain.com/trac/Code Igniter Sous-répertoire Question

Je travaille « TRAC » avec le cadre de codeginiter et ma structure de répertoire ressemble

.htaccess 
index.php 
system 
trac 

Je peux accéder à l'URL d'ABOV très bien, mais le problème est les scripts et autres fichiers contenus dans les sous-répertoires trac: trac/chrome/common/css/trac.css ne sont pas accessibles et 404. Voici mon code .htaccess. S'il vous plaît aider.

RewriteEngine On 
RewriteRule ^$ index.php [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteCond $1 !^trac/ 
RewriteRule ^trac/(.*) /trac/$1 

Répondre

0

Si vous supprimez les deux dernières lignes, cela devrait fonctionner.

RewriteCond %{REQUEST_FILENAME} !-f vérifie que vous ne demandez pas de fichier. Si vous l'êtes, cette condition échoue et la règle RewriteRule ^(.*)$ index.php?/$1 [L] n'est jamais exécutée.

1

règles de réécriture sont exécutées dans l'ordre ... alors essayez ce

RewriteCond %{REQUEST_URI} !^/trac/ 
RewriteCond $1 !(index\.php/) 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Explication:

if the uri DOES NOT start with trac 
if the uri IS NOT index.php 
rewrite url as index.php?/{rest of the url} 
2

Vous ne même pas besoin de parler/trac/dans votre .htaccess. C'est exactement le point de

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

vous configurez deux « Réécrire Conditions. » Le premier dit, "Tant que la demande n'est pas un fichier." Le second dit "OU Tant que la requête n'est pas un répertoire".

Puis

RewriteRule ^(.*)$ index.php?/$1 [L] 

Envoie tout le reste à index.php, où CI prend le relais. Et juste pour le dossier, tout mon .htaccess que j'utilise sur chaque projet:

Options +FollowSymLinks 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Si vous êtes confus au sujet de la ligne RewriteCond %{REQUEST_URL} ^system.*, il existe seulement pour que tout navigateur demande au dossier/system/est toujours routé à index.php, et donc ignoré.

Questions connexes