我是CodeIgniter的菜鸟,我正在尝试找出我正在构建的应用程序的配置。我的设置出了问题。
我在Windows上运行XAMPP并使用别名目录指向应用程序目录。换句话说:“http://localhost/app_name/”指向应用程序的根目录。在我为mod_rewrite执行.htaccess之前,这一切似乎都运行良好。然后,每当我尝试去控制器时,我都会回到xampp root。
我的配置是:
目录
/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.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)。这令人沮丧。
答案 0 :(得分:5)
成功!!
我终于设法让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]
答案 1 :(得分:2)
如果您在本地计算机上使用XAMPP,则应使用internal
而不是mod_rewrite
。
它会以别名加载您的网页。
我花了一段时间才弄明白 - 显然你应该在远程服务器上使用mod_rewrite
来实现同样的目标。
答案 2 :(得分:1)
RewriteBase /
你的.htaccess中的应该是
RewriteBase /app_name/
指定它是哪个目录..
答案 3 :(得分:0)
首先,一个问题。您的$system_folder
变量是否真的设置为:
$system_folder = "@codeigniter";
或者是那种来自怪物(对我来说)SO使用降价的方式?如果是,请删除@
。它是目录/文件名的无效字符。
接下来,我相信您的RewriteBase
应该是/
,因为您在Apache中使用了别名,但请不要引用我。
我个人使用此处提供的.htaccess格式:CodeIgniter URLs in the User Guide;在删除index.php文件标题下。但是,有很多方法可以做到这一点。 quick Google search产生了几千个。
您是否启用了mod_rewrite
? Check the forum post here