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