Question

Je suis un noob à CodeIgniter et essaie de comprendre la configuration d'une application que je construis. Quelque chose ne va pas avec ma configuration.

Je suis en cours d'exécution sur Windows XAMPP et je suis en utilisant un répertoire d'alias pour pointer vers le répertoire des applications. En d'autres termes: " http: // localhost / app_name / " pointe vers le répertoire racine de l'application. Tout semble bien fonctionner jusqu'à ce que je fais le .htaccess pour mod_rewrite. Alors chaque fois que j'essaie d'aller à un contrôleur je me plantais revenir à la racine xampp.

Ma config est:

Annuaires

/app_root
/app_root/codeigniter // where code igniter is located.
/app_root/main        // where the main app is located.  It' the applications 
                      // directory cut from code igniter and renamed.

.htaccess

<IfModule mod_rewrite.**so**>
RewriteEngine On
RewriteBase **/app_name/**
RewriteCond %{REQUEST_URI} ^codeigniter.*
RewriteRule ^(.*)$ /index.php?/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>

index.php

$system_folder = "@codeigniter";
$application_folder = "main";

app_name / main / config / config.php

$config['base_url'] = "http://localhost/app_name/";
$config['index_page'] = "";

app_name / main / config / routes.php

$route['default_controller'] = "welcome";

Je doit également préciser que le répertoire app_name est un alias pour un autre lecteur que la racine apache.

Apache Root: c:\xampp\htdocs\
App_name: d:\projects\app_name\development\

L'alias est:

Alias /app_name "d:/projects/app name/development"
<Directory "d:/projects/app name/development">
  Options Indexes FollowSymLinks ExecCGI
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory> 

Merci d'avance pour l'aide ... Et si vous ne me dérange pas s'il vous plaît « expliquer » ce que vous faites lorsque vous répondez avec le code. Je veux savoir ce que je fais mal. Si vous pouvez me aider avec ce que je vais vous acheter une bière (via PayPal). Ceci est frustrant.

Était-ce utile?

La solution

Le succès !!

J'ai finalement réussi à obtenir la réécriture d'URL fonctionne et ce un long voyage ardu qu'il était. Voici ce que je me suis enfin travailler. Prenez note qu'il n'y a pas sur la barre oblique inverse RewriteBase. donné très intéressant ce que je l'ai lu. Merci à tous ceux qui ont essayé d'aider.

# Options
Options -Multiviews
Options +FollowSymLinks

#Enable mod rewrite
RewriteEngine On
#the location of the root of your site
#if writing for subdirectories, you would enter /subdirectory
RewriteBase /app_name

#Removes access to CodeIgniter 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]

#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

#This last condition enables access to the images and css
#folders, and the robots.txt file
RewriteCond $1 !^(index\.php|images|robots\.txt|css)

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

Autres conseils

Si votre utilisation de XAMPP sur une machine locale, votre devrait utiliser internal plutôt que mod_rewrite.

Il va charger vos pages sous le nom d'alias.

il m'a fallu un certain temps pour comprendre cela - apparemment, vous devez utiliser mod_rewrite sur des serveurs distants pour obtenir la même chose

.
RewriteBase /

dans votre .htaccess doit être

RewriteBase /app_name/

pour spécifier quel répertoire il est ..

Tout d'abord, une question. Votre variable $system_folder vraiment réglé sur:

$system_folder = "@codeigniter";

ou était-ce un Nerf de l'étrange (pour moi) chemin utilise des démarques? Le cas échéant, retirez le @. Il est un caractère non valide pour les noms répertoire / fichiers.

Ensuite, I croire votre RewriteBase devrait être /, puisque vous utilisez un alias dans Apache, mais ne me citez pas là-dessus.

J'utilise personnellement le format .htaccess fourni ici: CodeIgniter URL dans le Guide de l'utilisateur ; sous la rubrique Suppression du fichier index.php . Il y a plusieurs façons de le faire, cependant. A Vérifiez le post sur le forum .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top