Domanda

Sono un noob a CodeIgniter e sto cercando di capire la configurazione di un app che sto costruendo. C'è qualcosa di sbagliato con la mia messa a punto.

Io corro XAMPP su Windows e utilizza una directory di alias per puntare alla directory delle applicazioni. In altre parole: " http: // localhost / app_name / " punta alla directory principale dell'applicazione. Tutto sembra funzionare bene fino a quando faccio la .htaccess per mod_rewrite. Poi ogni volta che cerco di andare a un controller vengo piantato di nuovo alla radice XAMPP.

La mia configurazione è:

Directory

/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";

Vorrei anche affermare che la directory app_name è un alias per un disco diverso rispetto alla radice apache.

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

L'alias è:

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> 

Grazie in anticipo per l'aiuto ... e se non ti dispiace per favore "spiegare" cosa si sta facendo quando si risponde con il codice. Voglio sapere che cosa sto facendo male. Se mi potete aiutare con questo ti offro una birra (tramite PayPal). Questo è frustrante.

È stato utile?

Soluzione

Successo !!

sono finalmente riuscito a ottenere URL Rewrite funziona e cosa un lungo faticoso cammino è stato. Ecco quello che ho ottenuto lavorando finalmente. Prendere atto che non v'è alcuna barra rovesciata sul RewriteBase. Molto interessante dato quello che ho letto. Grazie a tutti coloro che ha cercato di aiutare.

# 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]

Altri suggerimenti

Se la vostra utilizzando XAMPP su un computer locale, il tuo dovrebbe usare internal piuttosto che mod_rewrite.

Sarà caricare le pagine con il nome di alias.

mi c'è voluto un po 'per capirlo - a quanto pare si dovrebbe usare mod_rewrite su server remoti per ottenere la stessa cosa

.
RewriteBase /

nel vostro .htaccess dovrebbe essere

RewriteBase /app_name/

per specificare quale directory è ..

In primo luogo, una domanda. È la variabile $system_folder veramente impostato su:

$system_folder = "@codeigniter";

o era un nerf dalla strana (per me) modo utilizza SO Markdown? Se lo è, rimuovere il @. Si tratta di un carattere non valido per i nomi di directory / file.

Avanti, I credere il tuo RewriteBase dovrebbe essere /, in quanto si utilizza un alias in Apache, ma non mi citare su questo.

Io personalmente uso il formato di .htaccess fornito qui: CodeIgniter URL nella Guida per l'utente ; sotto il titolo Rimozione del file index.php . Ci sono molti modi per farlo, però. Un rapida ricerca su Google produce un paio di migliaia.

Avete mod_rewrite abilitato? Controllare il post sul forum qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top