Codeigniter base url issue with www

别说谁变了你拦得住时间么 提交于 2019-12-12 04:17:04

问题


I have declared the base url as $config['base_url'] = 'http://example.com/';.

But the issue is if someone try to access my website with 'http://www.example.com/'; , css/ js functions are not working.

If I change the base url to 'http://www.example.com/' , users cannot access with 'http://example.com/'.

I am using codeigniter 3.0.3 . This is an issue with a website which is already online.

CSS - assets/plugins/bootstrap/css/bootstrap.min.css" />

JS - ">

. btw , ajax request are also failed.When I try to access an ajax function the bellow error showing on console –

XMLHttpRequest cannot load http://www.example.com/Dynamic/home/normal/4. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access.

css error

Font from origin 'http://www.example.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access.


回答1:


I think the following code-block shows the best way to configure the base_url in Codeigniter :

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

And I strongly believe that this will solve your problem. Thank you.




回答2:


Change your base url from

$config['base_url'] = 'http://example.com/';

to

$config['base_url'] = 'http://www.example.com/';

Reason:www and non-www website url are considered as different website so it gives the error of

Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin'

Better way is the add code in htaccess to convert non-www to www.

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www\.%{HTTP_HOST}/$1 [L,R=301]

Hope this explain the reason of change...




回答3:


Define baseUrl like this

$config['base_url'] = 'stackoverflow.com/';

and .htaccess should be

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

As well as make sure URL helper is loaded.



来源:https://stackoverflow.com/questions/34553513/codeigniter-base-url-issue-with-www

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!