Mod_rewrite, xampp ve pencereler ile CodeIgniter yapılandırma

4 Cevap php

Ben CodeIgniter bir çaylak ve ben inşa ediyorum bir uygulama için yapılandırma anlamaya çalışıyorum. Şey benim kurulum ile yanlış.

Windows üzerinde XAMPP çalıştırıyorum ve uygulamaları dizine işaret etmek için bir takma ad dizini kullanıyorum. Başka bir deyişle: uygulamanın kök dizinine "http://localhost/app_name/" puan. Tüm ben mod_rewrite için. Htaccess yapmak kadar iyi iş gibi görünüyor. Sonra ben xampp köküne geri perdeli olsun bir denetleyiciye gitmeye çalışırım her zaman.

My config is:

Dizinler

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

Ben de app_name dizini apache kök farklı bir sürücü için bir takma ad olduğunu belirtmelidir.

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

Takma adıdır:

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>

Şimdiden teşekkürler yardım için ... Ve sen kodu ile cevap zaman ne yaptığınızı açıklamak "" lütfen sakıncası yoksa. Ben yanlış ne yapıyorum bilmek istiyorum. Bu konuda bana yardımcı olabilir ben (PayPal aracılığıyla) sana bir bira ısmarlayayım. Bu sinir bozucu.

4 Cevap

Başarı!

Sonunda URL yeniden yazma çalışma almak başardı ve ne bir uzun zorlu bir yolculuk. İşte Sonunda çalışma var budur. RewriteEngine üzerinde hiçbir eğik çizgi olduğunu unutmayın alın. Çok ilginç ne okudum verilmiştir. Yardım etmeye çalıştı herkese teşekkürler.

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

Senin bir yerel makinede XAMPP kullanıyorsanız, sizin kullanmak internal yerine mod_rewrite olmalıdır.

Bu takma adı altında sayfalarınızı yükleyecektir.

görünüşe göre aynı şeyi elde etmek için uzak sunuculardaki mod_rewrite kullanmalısınız - bu anlamaya biraz zaman aldı.

RewriteBase /

senin. htaccess olmalıdır

RewriteBase /app_name/

Bu hangi dizin belirtmek için ..

İlk olarak, bir soru. : Lütfen $system_folder değişkeni gerçekten ayarlanır

$system_folder = "@codeigniter";

ya da (benim için) garip bir nerf yol SO markdown kullanır oldu? Eğer durum bu ise, @ çıkarın. Bu dizin / dosya adları için geçersiz karakter.

Sonra, ben believe sizin RewriteBase Apache bir takma ad kullanması beri, / olmalı, ama beni bu konuda teklif etmeyin.

. Ben şahsen burada sağlanan htaccess biçimi kullanın: {[(0)];} başlığı altında Removing the index.php file. Bunu yapmanın pek çok yolu ancak vardır. A quick Google search, bir kaç bin verir.

Eğer mod_rewrite etkin var mı? Check the forum post here.