xampp 上的 codeigniter 想让我在 uri 中使用 index.php
Posted
技术标签:
【中文标题】xampp 上的 codeigniter 想让我在 uri 中使用 index.php【英文标题】:codeigniter on xampp wants me to use index.php in uri 【发布时间】:2015-04-07 13:24:22 【问题描述】:我在使用 codeigniter 和现有代码设置本地测试环境时遇到问题。
好吧,问题是,如果我的 URL 中没有“index.php”,我就无法打开页面。因此,“test.mydomain.local/index.php/search”可以正常工作,而“test.mydomain.local/search”则不行。但是代码中的所有链接,除了 form-tags 中的 action-URL,在 URL 中都没有这个“index.php”。
我该如何解决这个问题,codeigniter 或 xampp 在 URL 中需要这个“index.php”?我是否需要更改我的代码或 .htaccess 中的某些内容?
这是我的 config.php
$config['base_url'] = "http://test.mydomain.local/";
$config['index_page'] = "index.php";
$config['uri_protocol'] = "AUTO";
好吧,这段代码在表单标签的action-URL中强制使用“index.php”。但实际上我不想在任何 URL 中有这个 index.php。所以我的 config.php 应该是这样的,我猜:
$config['base_url'] = "http://test.mydomain.local/";
$config['index_page'] = "";
$config['uri_protocol'] = "AUTO";
这是.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
### force www
RewriteCond %HTTP_HOST ^mydomain.com [NC]
RewriteRule (.*) h t t p : / / w w w . m y d o m a i n . c o m/$1 [R=301,L]
RewriteCond %HTTP_HOST ^domain.local [NC]
RewriteRule (.*) h t t p : / / t e s t . d o m a i n . l o c a l/$1 [R=301,L]
### if the is not a request for an existing file or directory
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
### and the URI does not end with a /
RewriteCond %REQUEST_URI !^([^?]*)/($|\?)
### redirect and add the slash.
RewriteRule ^([^?]*) $1/ [L,R=301]
### if the is not a request for an existing file or directory
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
# rewrite to index.php passing the URI as a path, QSA will preserve the existing query string
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
有人可以帮助我吗?快把我逼疯了!
【问题讨论】:
有很多类似这样的问题和答案。您可以查看文档ellislab.com/codeigniter/user-guide/general/urls.html 【参考方案1】:我使用 xampp,发现这个 htaccess 是最好的。不要将你的基本 url 放在 config/config.php 中并删除索引。
.htaccess
Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
你的 config.php
/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
| http://example.com/
|
| If this is not set then CodeIgniter will try guess the protocol, domain
| and path to your installation. However, you should always configure this
| explicitly and never rely on auto-guessing, especially in production
| environments.
|
*/
$config['base_url'] = 'http://localhost/project name/';
/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = '';
【讨论】:
以上是关于xampp 上的 codeigniter 想让我在 uri 中使用 index.php的主要内容,如果未能解决你的问题,请参考以下文章
XAMPP 上的 CodeIgniter - 403/404 访问图像时出错
Codeigniter 4 不适用于带有 PHP 8.0 的 xampp