2011-07-20 5 views
5

Je viens d'ajouter un fichier htaccess à mon application codeigniter qui supprime "index.php" de l'url. Les URL fonctionnent bien, mais maintenant les liens CSS ne fonctionnent pas, même si les références sont absolues (ie "http: // ...") Les images ainsi que tous les autres liens fonctionnent parfaitement, mais les fichiers CSS charge pas. C'est le fichier HTAccess.CodeIgniter HTAccess ne charge pas les fichiers CSS

RewriteEngine on RewriteCond $1 !^(main.php|images|robots.txt) RewriteRule ^(.*)$ main.php/$1 [L]

Et oui mon fichier d'index est maintenant main.php parce que je vais utiliser deux applications différentes sur la même installation de CI. Merci pour toute aide.

Répondre

9

Vous pouvez également les opérations suivantes:

# Checks to see if the user is attempting to access a valid file, 
# such as an image or css document, if this isn't true it sends the 
# request to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ main.php/$1 [L] 

Cela vous permettra de créer ce que les dossiers que vous voulez dans la racine web (styles, images, scripts) sans avoir à déclarez-les dans le fichier htaccess.

+0

ne pas oublier les robots.txt et sitemaps. –

+0

Ce n'est pas pertinent avec ce code, il va vérifier si le fichier est valide dans le système de fichiers, puis rediriger vers le fichier d'applications main.php si elles n'existent pas. Cela fonctionnera heureusement pour robots.txt, sitemaps - à peu près n'importe quoi. – simnom

+0

Désolé n'a pas fait attention. Râper la solution. –

2

votre fichier htaccess manque une ligne :)

RewriteEngine on 
RewriteCond $1 !^(main\.php|images|robots\.txt|styles) 
RewriteRule ^(.*)$ /main.php/$1 [L] 

Vous pouvez mettre vos styles répertoire dans la ligne RewriteCond. J'ai ajouté des styles par exemple.

Plus d'info here

+0

En outre, vous devez ajouter toute URL que vous souhaitez accéder ici. Sinon, ils seront redirigés vers la page main.php/$ url (qui, bien sûr, n'existe pas). –

1

Vous voudrez peut-être jeter un coup d'œil au fichier .htaccess que j'utilise maintenant.

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt|css|design|img|js) 
RewriteRule ^(.*)$ /a-cat/index.php/$1 [L] 
</IfModule> 

La structure du répertoire est comme ceci:

enter image description here

Le fichier CSS peut être utilisé de cette façon:

<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>css/main.css" /> 
2

J'utiliser. Est bien commenté, et évidemment pas écrit par moi.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 
0

La réponse simple à ce problème est: Utilisez le code .htaccess de CodeIgniter indiquées ci-dessous et sur le chemin de votre css, js et images utiliser la fonction base_url comme indiqué

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase # The path to your project/official/hrm/ 

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 


</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 

<link rel="stylesheet" href="<?php echo base_url(); ?>the rest of path to yourfile"> 
Questions connexes