Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess中的Codeigniter URL路由问题_Php_Apache_.htaccess_Codeigniter 2 - Fatal编程技术网

Php .htaccess中的Codeigniter URL路由问题

Php .htaccess中的Codeigniter URL路由问题,php,apache,.htaccess,codeigniter-2,Php,Apache,.htaccess,Codeigniter 2,在你把它标为复制品之前,我已经试过了所有我能找到的解决办法 网址是 配置文件(如果我使用$config['base\u url']=''-它根本不起作用) .htaccess文件 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond $1 !^(index\.php|assets|woff|eot|img|css|js|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !

在你把它标为复制品之前,我已经试过了所有我能找到的解决办法

网址是

配置文件(如果我使用$config['base\u url']=''-它根本不起作用)

.htaccess文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !^(index\.php|assets|woff|eot|img|css|js|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
</IfModule>
这是我的控制器

class Tlc extends CI_Controller
    public function view($page='index')
    {
        if ( ! file_exists(APPPATH.'/views/tlc/'.$page.'.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        } 
         else
         {
            $this->load->view('tlc/templates/header.php');
            $this->load->view('tlc/'.$page);   
            $this->load->view('tlc/templates/footer.php');   
        }
所以我基本上是想让菜单链接起作用。它们仅适用于完整url,即deltadigital.ca/index.php/tlc/view/about-us

它是CI 2.2.2,主机是1和1,我的视图文件位于views/tlc文件夹中

更新:删除了前导斜杠:
$route['([a-z]+)']=“tlc/view/$1”

好的,如前所述,我不是代码点火器大师。我只知道以下几点对我很有用:

配置:

$config['base\u url']=”http://www.deltadigital.ca/";
#或者使用$config['base_url']=“”;
$config['uri_protocol']=“请求_uri”;
$config['index_page']='';
路线:

$route['default_controller']=“tlc/view”;
$route['(:any)]=“tlc/view/$1”;
$route['404_override']=“”;
控制器:


基本URL是否应该为空?CI为您获得了…谢谢,但仍然不起作用。设置为空白后,我尝试了其他重写规则。那么这是服务器设置的问题吗?嗯,也许从第二条路由中删除前导斜杠?文件表明,将这些排除在外很重要。此外,您的基本URL应该用尾部斜杠定义:
$config['base\u URL']=”http://www.deltadigital.ca/“
。是的,我添加了尾随斜杠…www.deltadigital.ca/我尝试了在网上找到的不同规则,我现在使用的是RewriteRule^(.*)$index.php?/$1[L,QSA]——因此它没有前导斜杠,仍然不起作用。如果我删除前导斜杠,它会给我500服务器错误,这表明.htaccess中有错误,带前导斜杠的只是给我的webhosts 404。不管怎样谢谢你,还是一样,现在不是404,而是500。我很高兴它对一些人有用。我会继续尝试(你可能看到我的更新了吗?你是否100%确定你使用的正是我在回答中的内容?)如果你得到的是500分,你的Apache错误日志中有什么?我确实看到了更新。这是一个字符对字符的复制。我做了复制和粘贴。谢谢您的时间,我想我看不到错误日志,我从1和1控制面板只能看到访问和邮件日志。
$route['default_controller'] = "tlc/view";
$route['/([a-z]+)'] = "tlc/view/$1";
$route['404_override'] = '';
class Tlc extends CI_Controller
    public function view($page='index')
    {
        if ( ! file_exists(APPPATH.'/views/tlc/'.$page.'.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        } 
         else
         {
            $this->load->view('tlc/templates/header.php');
            $this->load->view('tlc/'.$page);   
            $this->load->view('tlc/templates/footer.php');   
        }