当我将文件从localhost部署到我的服务器时,我遇到了重定向循环。
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
该网站是多语言的,我正在使用.htaccess文件从uri中删除index.php。我正在尝试将网站部署到我的域中的子文件夹(即http://www.mydomain.com/subfolder),理想情况下我想要这样的网址(http://www.mydomain.com/subfolder/en/welcome)
我的.htaccess文件:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
我也尝试过:
RewriteEngine on
RewriteBase /subfolder/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
我的config.php:
$config['base_url'] = 'http://www.mydomain.com/subfolder/';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
我的routes.php:
$route['default_controller'] = "home";
$route['404_override'] = '';
$route['^../products/(:num)'] = "products/products_list/index/$1";
$route['^../products'] = "products/products_list/index";
$route['^../products/detail/(:num)'] = "products/product/index/$1";
$route['^../(.+)$'] = "$2";
最后是i18n的MY_Config课程:
class MY_Config extends CI_Config {
function site_url($uri = '')
{
if (is_array($uri))
{
$uri = implode('/', $uri);
}
if (function_exists('get_instance'))
{
$CI =& get_instance();
$uri = $CI->lang->localized($uri);
}
return parent::site_url($uri);
}
}
此设置在我的本地环境中正常工作,我通过http://local.subfolder.com访问,我设置了一个虚拟主机来执行此操作,但是当我在子文件夹中部署到服务器时,此设置不起作用。
如果有人可以指出问题所在,我会很高兴的。对于这篇长篇文章感到抱歉,但希望尽可能多地提供信息。
提前致谢
答案 0 :(得分:1)
我尝试从RewriteBase
RewriteBase /subfolder
并修改您的RewriteCond
RewriteEngine On
RewriteBase /subfolder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
我注意到在?
之前使用/$1
似乎有时也会在CI中使用。
答案 1 :(得分:0)
如果您想将htaccess用于特定文件夹,请将您的htaccess放在该文件夹中。例如,
如果您使用五个虚拟主机,如v1,v2,v3,v4,v5。如果你想在v3中使用你的htaccess,只需将该文件放在该文件夹中即可。