Конфигурация CodeIgniter с mod_rewrite, xampp и окнами - PullRequest
1 голос
/ 03 декабря 2009

Я новичок в CodeIgniter и пытаюсь выяснить конфигурацию приложения, которое я создаю. Что-то не так с моей настройкой.

Я использую XAMPP в Windows и использую каталог псевдонимов, чтобы указать каталог приложений. Другими словами: «http://localhost/app_name/» указывает на корневой каталог приложения. Кажется, все работает хорошо, пока я не сделаю .htaccess для mod_rewrite. Затем каждый раз, когда я пытаюсь перейти к контроллеру, меня возвращают обратно в корень xampp.

Моя конфигурация:

Директории

/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 / главная / Config / config.php

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

app_name / основной / конфигурации / routes.php

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

Я также должен указать, что каталог app_name является псевдонимом для диска, отличного от корня apache.

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

Псевдоним:

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> 

Заранее спасибо за помощь ... И если вы не возражаете, пожалуйста, "объясните", что вы делаете, когда отвечаете с кодом. Я хочу знать, что я делаю не так. Если вы можете помочь мне с этим, я куплю вам пиво (через PayPal). Это расстраивает.

Ответы [ 4 ]

5 голосов
/ 07 декабря 2009

Успех !!

Мне, наконец, удалось заставить работать перезапись URL-адреса и как долго это было нелегко. Вот что я наконец заработал. Обратите внимание, что в RewriteBase нет обратной косой черты. Очень интересно, учитывая то, что я прочитал. Спасибо всем, кто пытался помочь.

# 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]
2 голосов
/ 18 декабря 2010

Если вы используете XAMPP на локальной машине, вам следует использовать internal вместо mod_rewrite.

Он загрузит ваши страницы под псевдонимом.

Мне потребовалось некоторое время, чтобы понять это - очевидно, вы должны использовать mod_rewrite на удаленных серверах для достижения того же.

1 голос
/ 03 декабря 2009
RewriteBase /

в вашем .htaccess должно быть

RewriteBase /app_name/

чтобы указать, к какому каталогу это относится.

0 голосов
/ 05 декабря 2009

Сначала вопрос. Ваша переменная $system_folder действительно установлена ​​на:

$system_folder = "@codeigniter";

или это был нерф из странного (для меня) способа, которым ТАК использует уценку? Если это так, удалите @. Это недопустимый символ для имен каталогов / файлов.

Далее, я считаю, ваш RewriteBase должен быть /, поскольку вы используете псевдоним в Apache, но не цитируйте меня об этом.

Я лично использую предоставленный здесь формат .htaccess: URL CodeIgniter в Руководстве пользователя ; под заголовком Удаление файла index.php . Однако есть много способов сделать это. A быстрый поиск в Google дает пару тысяч.

У вас включен mod_rewrite? Проверьте сообщение на форуме здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...