【问题标题】:CodeIgniter URL not found未找到 CodeIgniter URL
【发布时间】:2013-03-27 16:12:54
【问题描述】:

enter code here我的 .htaccess 文件中有这段代码:

RewriteEngine On
RewriteBase /projFolder

### Canonicalize codeigniter URLs

# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(mycontrol(/index)?|index(\.php)?)/?$ /  [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]

# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

# Enforce www
# If you have subdomains, you can add them to 
# the list using the "|" (OR) regex operator
RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]

# Enforce NO www
#RewriteCond %{HTTP_HOST} ^www [NC]
#RewriteRule ^(.*)$ http://domain.tld/$1 [L,R=301]

###

# 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]

# 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]

我的项目在 /var/www/projFolder -> 该文件夹中的结构是

/application
/system
/user_guide
.htaccess
index.php

我改变了 $route['default_controller'] = "mycontrol";在配置 routes.php 文件中。 如果我输入 url localhost/projFolder/ 它会从该控制器加载默认的 mycontrol.php 控制器和索引函数。如果我去 localhost/projFolder/myFunction -> 意味着我想从默认控制器加载 myFunction,它会给我“在此服务器上找不到请求的 URL”。有人可以帮忙吗?谢谢。

【问题讨论】:

    标签: php .htaccess codeigniter url-rewriting


    【解决方案1】:

    打开您的config/routes.php 文件

    添加这一行:

    $route['mycontrol/(:any)'] = "mycontrol/index";
    

    然后我从来没有用过这么大的.htaccess 和 codeigniter,我总是用这个而且效果很好:

    RewriteEngine On
    RewriteBase /projFolder
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /projFolder/index.php/$1 [L]
    

    要删除 index.php,您必须使用 htaccess 并更改 config/config.php:

    $config['index_page']='';
    

    【讨论】:

    • 问题是我必须写 localhost/projFolder/index.php/ 从控制器加载控制器和函数。我想从 url 中删除 index.php,使其像 localhost/projFolder/mycontrol
    • @LachezarRaychev 好的,所以请检查我的答案是否已更新,您在重写 url 时遇到问题,因此它可能是 htaccess 或配置文件,您是否尝试过我的 htaccess?
    • 是的......遗憾的是它不起作用:(这个 sh*T 已经 5 小时了
    • @LachezarRaychev 但请谷歌如何从 codeigniter 中的 url 中删除 index.php 并在此处报告错误
    • 我把它放在虚拟主机上,用官方代码点火器.htaccess很好
    【解决方案2】:

    将您的 .htaccess 字段编辑为:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$0 [PT,L]
    </IfModule>
    

    【讨论】:

      【解决方案3】:

      虽然mycontrol 是默认控制器,但它不会工作,因为它希望在您键入localhost/projFolder/myFunction 时找到一个名为myFunctioncontroller。如果您想访问myfunction,请尝试输入localhost/projFolder/mycontrol/myFunction。使用这种方法,您将调用控制器并请求特定功能。

      【讨论】:

        猜你喜欢
        • 2015-08-29
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 2021-09-06
        • 2016-10-29
        • 1970-01-01
        • 2015-01-25
        相关资源
        最近更新 更多