我正在为公司更新项目。我将文件传输到我的localhost。所以项目在“localhost / project /”中。当我在浏览器中打开网站时,所有链接都指向“localhost / filename”,目录从项目文件夹向上一级。我做了一些研究,并注意到人们建议改变htaccess,但仍然无法得到正确的结果。并建议请告诉我。如果您需要我的任何东西,请询问。谢谢!
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
开始:
http://localhost/projectfolder/
<a href="/" title="">Home</a>
导致:
http://localhost/
Config.php:
$config['base_url'] = 'http://localhost/projectfolder/';
$config['index_page'] = "";
$config['uri_protocol'] = "AUTO";
$config['url_suffix'] = ".html";
$config['language'] = "english";
$config['charset'] = "UTF-8";
$config['enable_hooks'] = FALSE;
$config['subclass_prefix'] = 'MY_';
$config['permitted_uri_chars'] = 'a-z & + 0-9~%.:_\-,\'?';
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['log_threshold'] = 0;
$config['log_path'] = '';
$config['log_date_format'] = 'Y-m-d H:i:s';
$config['cache_path'] = '';
$config['encryption_key'] = "";
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['global_xss_filtering'] = FALSE;
$config['compress_output'] = FALSE;
$config['time_reference'] = 'local';
$config['rewrite_short_tags'] = FALSE;
$config['proxy_ips'] = '';
答案 0 :(得分:1)
您可能需要打开config.php文件并将base_url值更改为localhost或localhost:8080(或您的localhost使用的任何端口)。
修改强>
问题是所有主播代码都使用主页的/
等硬编码值。
在服务器上,这样可以正常运行,因为您的域名类似于example.com
,所以转到/
,您就是说转到example.com/
。
在codeigniter中创建链接的正确方法是使用anchor()
帮助程序,或者在项目中手动创建锚标记,但使用base_url()
或site_url()
HREF。
如何修复指向主页的链接的示例如下:
<a href="<?php echo base_url(); ?>/">blah</a>
它可能适用于你的href值前缀为base_url的所有链接,但它取决于链接中的值。
这是codeigniter辅助方法的链接 - http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html。
最好看一下codeigniter手册,因为它非常好。
答案 1 :(得分:0)
更改以下行
RewriteRule ^(.*)$ index.php/$1 [L]
to
RewriteRule ^(.*)$ /project/index.php/$1 [L]
希望它能奏效。
答案 2 :(得分:0)
尝试这个简单的.htaccess它似乎对我有用:你的错过了ReWriteBase
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /projectfolder/
# If the start of the URL doesn't match one of these...
RewriteCond $1 !^(index\.php|robots\.txt|uploads|css|images|js)
# Route through index.php
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
如果这对您有用,我想您可以从修复ReWriteBase开始。
请注意,当您将此htaccess文件上传到主机并且默认base_url更改为类似www.example.com时,您必须将ReWriteBase更改为/
并且不要忘记尽可能在链接中使用<?php echo base_url() ?>
。
我希望有所帮助。
答案 3 :(得分:0)
在配置文件中使用它:
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your project folder name';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
在.htaccess
中使用它RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
并使用以下命令启用重写模式
a2enmod rewrite
并编辑文件/ etc / apache2 / sites-enabled / 000-default
change all the AllowOverride None to AllowOverride All.