1

通常我访问这样的页面:http://localhost/codeigniter/index.php/auth/login 但是我希望能够访问这样的页面:http://localhost/codeigniter/auth/login

我没有关于http.conf.htaccess配置的信息。

我已经$config['index_page'] = '';设置codeigniter/application/config/config.php

我的 http.conf 文件是默认的,除了取消注释“ LoadModule rewrite_module modules/mod_rewrite.so

我检查了许多提议的 .htaccess 文件,但我无法理解重写规则背后的逻辑。

这是对我来说最成功的.htaccess内容。它位于/www/CodeIgniter/
(最成功的我的意思是这是唯一一个由 CodeIgniter 而不是由服务器创建的 404 错误。)

    RewriteOptions Inherit
Options -Indexes
Options +FollowSymLinks
RewriteBase /CodeIgniter/
# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>

    # activate URL rewriting
    RewriteEngine on

    # do not rewrite links to the documentation, assets and public files
    RewriteCond $1 !^(images|assets|uploads|captcha)

    # do not rewrite for php files in the document root, robots.txt or the maintenance page
    RewriteCond $1 !^([^\..]+\.php|robots\.txt)

    # but rewrite everything else
    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.

    ErrorDocument 404 index.php

</IfModule>

我讨厌要求直接解决方案,但不幸的是,这是我最后的手段:/你能给我一个正确的解决方案吗?

4

3 回答 3

1

这是我的重复答案: Codeigniter 与 localhost (XAMPP) 中的路径有关的问题

请在项目文件夹中创建 .htaccess 文件并写入:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

</IfModule>
<IfModule !mod_rewrite.c>
 ErrorDocument 404 index.php
</IfModule>

您不需要在配置文件的 base_url 中定义:

$config['base_url'] = ''; // blank it.
于 2012-11-02T17:06:19.387 回答
0

把它放在你的 htaccess 上

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
</IfModule>

确保在您的服务器上启用了重写模块

于 2012-11-02T17:04:37.323 回答
0

这是我发现对我有用的最简单的一个:-

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
于 2012-11-02T19:39:29.887 回答