2014-01-27 88 views
0

我有一个codeigniter php应用程序,它在我的本地机器(IIS)上完美工作,但是当我将它部署到LAMP服务器(Apache)时,我只能访问http://<ip-ddress>:8080/company/不是该网站上的任何其他链接,例如。 http://<ip-ddress>:8080/company/helphttp://<ip-ddress>:8080/company/aboutusApache服务器上的Php Codeigniter - 内部页面不起作用

这是我虚拟主机条目阿帕奇在远程服务器上:

<VirtualHost *:8080> 
     ServerAdmin [email protected] 
     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> 

这是我笨配置设置 - 的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

它看起来并不像你重新写了'index.php'文件。 'http:// :8080/company/index.php/help'是否有效? – stormdrain

+0

@stormdrain,实际上工作! – sunskin

+0

谢谢!什么是最好的地方有?是否应该添加到httpd-vhosts.conf虚拟主机条目中? – sunskin

回答

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 

相关问题