Apache服务器上的Php Codeigniter - 内部页面不起作用

时间:2014-01-27 16:27:12

标签: php apache codeigniter virtualhost

我有一个codeigniter php应用程序,它在我的本地计算机(IIS)上运行得很好但是当我将它部署到LAMP服务器(Apache)时,我只能访问http://<ip-ddress>:8080/company/该网站上的任何其他链接,例如。 http://<ip-ddress>:8080/company/helphttp://<ip-ddress>:8080/company/aboutus等。

这是我在远程服务器上的虚拟主机条目

<VirtualHost *:8080>
        ServerAdmin xxxxxxx@xxx.xxx.xxx
        DocumentRoot "/app/content/pages"
        DirectoryIndex index.php
        ServerName company.xxx.xxxx.xxx
        ServerAlias company.xxx.xxxx.xxx
       LogLevel debug
        ErrorLog "|/app/server/apache2/bin/rotatelogs logs/company.xxx.xxxx.xxx-error_log 50M"

        <Directory "/app/content/pages">
            Options Includes FollowSymLinks
            AllowOverride All Options FileInfo
            Order allow,deny
            Allow from all

      <IfModule mod_php5.c>
            AddType application/x-httpd-php .php

            php_flag magic_quotes_gpc Off
            php_flag track_vars On
            php_flag register_globals Off
            php_value include_path .
          </IFModule>
    </Directory>

        #
        # The following lines prevent .htaccess and .htpasswd files from being
        # viewed by Web clients.
        #
        <FilesMatch "^\.ht">
            Order allow,deny
            Deny from all
            Satisfy All
        </FilesMatch>

        AddType text/html .shtml
        AddOutputFilter INCLUDES .shtml

        ServerSignature Off
</VirtualHost>

这是我的codeigniter配置设置 - application / config / config.php

$config['base_url'] = 'http://<ip-address>:8080/company/';
$config['index_page'] = 'index.php';
$config['uri_protocol'] = 'AUTO';
$config['url_suffix'] = '';
$config['proxy_ips'] = '';

这是我的 application / config / routes.php:

$route['(:num)'] = "home/index/$1";
$route['help'] = "home/help";
$route['home/(:num)'] = "home/index/$1";
$route['default_controller'] = "home";
$route['404_override'] = '';

1 个答案:

答案 0 :(得分:0)

添加重写规则有助于评论中提出的stormdain,但更有帮助的是添加重写库。这是我想出来的工作

    <Directory "/app/content/pages/company">
        Options Includes FollowSymLinks
        AllowOverride All Options FileInfo
        Order allow,deny
        Allow from all

  <IfModule mod_php5.c>
        AddType application/x-httpd-php .php

        php_flag magic_quotes_gpc Off
        php_flag track_vars On
        php_flag register_globals Off
        php_value include_path .
  </IFModule>

   <IfModule mod_rewrite.c>
         RewriteEngine On
         # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
         #  slashes.
         # If your page resides at
         #  http://www.example.com/mypage/test1
         # then use
         # RewriteBase /mypage/test1/
        RewriteBase /company              ## earlier this had just a trailing slash
        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.

        ErrorDocument 404 /index.php
  </IfModule>             

</Directory>

    #
    # The following lines prevent .htaccess and .htpasswd files from being
    # viewed by Web clients.
    #
    <FilesMatch "^\.ht">
        Order allow,deny
        Deny from all
        Satisfy All
    </FilesMatch>

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml

    ServerSignature Off