1

我是 codeIgniter 和 .htaccess 的新手。我已经将 index.php 删除到localhost/ci/index.php/site/home. 所以我的主页现在可以访问localhost/cilocalhost/ci/site/home

我有

<a href="home">Home</a> and <a href="about">About</a>

如果我在此链接上,我可以访问 Home 和 About localhost/ci/site/home。但是一旦我localhost/ci发现问题就存在,因为当我点击<a href="about">About</a>该网站时,我会将我重定向到localhost/ci/about而不是localhost/ci/site/about. 我更改<a href="site/home">Home</a> and <a href="site/about">About</a>浏览器的链接不断添加/site每次点击 localhost/ci/site/site/site/site/site/site/home

任何人都可以帮我解决问题吗?

.htaccess

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ci

#Removes access to the 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]

#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
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
RewriteRule ^(.*)$ index.php?/$1 [L]

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

4

5 回答 5

1

你看过URL Helper吗?它有许多功能可以在这些情况下提供帮助。

首先确保在控制器或自动加载配置中加载帮助程序。

锚()

在这种情况下,anchor()助手将是理想的。例如

<?php echo anchor('home', 'Home'); ?>

base_url()

或者,您可以使用base_url前面提到的方法构建 href。

<a href=<?php echo base_url(); ?>"about">About</a>
于 2012-10-26T12:19:18.217 回答
0

即使 htaccess 设置为将其视为基础,您仍在重新添加主控制器。如下编写链接应该可以解决问题。

<a href="about">About</a>

解决它的另一种方法是随时离开基地,这并不是真正必要的,但如果你遇到问题,它可以工作。

<a href=<?php echo base_url(); ?>"about">About</a>

每次编写链接时,将回显您在配置中设置为基本 URL 的任何内容,因此如果您的配置中的 base_url 是 www.localhost.com,则上面将写入 www.localhost.com/about .

别担心你会掌握它的窍门,当你第一次开始时,路由可能是 CI 中最复杂的部分。

于 2012-10-26T11:21:48.133 回答
0

转到您的配置文件并设置index_page为空。这将删除 index.php

并且当您将链接设置/为 infront 时:

<a href="/home">Home</a> and <a href="/about">About</a>
于 2012-10-26T10:51:40.467 回答
0

@Svetlio 所说的 + 我建议您site_url()在创建链接时使用

于 2012-10-26T10:53:54.130 回答
0

<a href="<?php echo base_url('home') ?>">Home</a>

<a href="<?php echo base_url('about') ?>">About</a>

于 2012-10-26T12:44:49.063 回答