2012-08-03 23 views
26

khi tôi đã có trang web của tôi trên môi trường phát triển - đó là url: testurl.comCách đặt url cơ sở mã hóa thích hợp?

Bây giờ trên máy chủ sản xuất địa chỉ ứng dụng CodeIgniter của tôi có được someurl.com/mysite/

tôi chuyển nó ở đó, và mỗi khi tôi cố gắng chạy một số chức năng, ví dụ /home/test - nó đưa tôi vào someurl.com/home/test - đó là WRONG.

Nó phải là someurl.com/mysite/home/test - Cách khắc phục? Tôi đã đặt

$config['base_url'] = someurl.com/mysite/ 

Trả lời

52

URL cơ sở nên tuyệt đối, bao gồm cả giao thức:

$config['base_url'] = "http://somesite.com/somedir/"; 

Nếu sử dụng helper URL, sau đó base_url() sẽ xuất chuỗi trên.

Đi qua đối số cho base_url() hoặc site_url() sẽ cho kết quả như sau (giả sử $config['index_page'] = "index.php";:

echo base_url('assets/stylesheet.css'); // http://somesite.com/somedir/assets/stylesheet.css 
echo site_url('mycontroller/mymethod'); // http://somesite.com/somedir/index.php/mycontroller/mymethod 
+0

+1 cho câu trả lời của bạn về tham chiếu tuyệt đối ... Nhưng nhìn vào điều này, tôi có một nghi ngờ ... Không phải là một ý tưởng tồi để có các tập tin CodeIgniter VÀ Các tệp 'somesite' trong cùng một vị trí (tức là www)? Tôi có nghĩa là sẽ không làm cho các tập tin CodeIgniter accebile bởi chương trình bên ngoài? Chỉ cần tò mò ... – itsols

+3

Có khả năng, có, và có hai điều cần xem xét: 1) Tất cả các tệp dự án CI phải có lối thoát 'if (! Defined ('BASEPATH')) ('Không cho phép truy cập tập lệnh trực tiếp'); dòng đầu tiên. Điều này ngăn cản kịch bản tự chạy bởi vì hằng số 'BASEPATH' không được định nghĩa khác (có thể là bộ điều khiển mặt trước của CI hoặc một tập lệnh khác). 2) Bạn có thể di chuyển một cách an toàn các thư mục 'system' AND' application' bên ngoài webroot của bạn (www, trong trường hợp của bạn) miễn là bạn chỉ định đường dẫn của chúng trong bộ điều khiển phía trước của CI (index.php). Về cơ bản, webroot của bạn sẽ chỉ chứa index.php và nội dung. Hy vọng rằng sẽ giúp. – Brendan

+0

Kịch bản để kiểm soát baseUrl này là gì –

4

Nếu bạn để trống khung sẽ cố gắng autodetect kể từ phiên bản 2.0.0.

Nhưng không phải trong 3.0.0, xem tại đây: config.php

-2

Cố gắng thêm bộ điều khiển để là tốt trang chỉ mục của bạn. Chỉ xem xét cấu trúc tương tự trên một trang web của riêng tôi và tôi đặt url cơ sở của tôi thành = "somedomain.com/v2/controller"

+0

Bạn có thể giải thích sâu hơn một chút không? – pawel

+0

Theo hiểu biết của tôi, bạn có ứng dụng và thư mục hệ thống trong một thư mục có tên là "mysite" và như đã nói, tôi có cấu trúc tương tự trên một trong các trang web của riêng mình. Nơi tôi đã đặt url cơ sở của tôi thành "http://www.somedomain.com/v2/controller", trong đó v2 là phiên bản của thư mục "mysite" và bộ điều khiển (hoặc bộ điều khiển/chức năng) của bạn làm bộ điều khiển bạn muốn có làm trang chỉ mục của bạn. – pbappia12

-1

Bạn có bỏ lỡ Dấu ngoặc kép không?

$ config [ 'BASE_URL'] = "someurl.com/mysite"

+0

Tôi làm, nhưng thay đổi không giúp ích:) – pawel

2

Sau khi tuyên bố url cơ sở trong config.php, (lưu ý, nếu bạn vẫn đang nhận được lỗi tương tự, kiểm tra autoload .php)

$config['base_url'] = "http://somesite.com/somedir/"; 

Kiểm tra "autoload"

CodeIgniter cấu trúc file:

\application\config\autoload.php 

Và cho phép trên autoload:

$autoload['helper'] = array(**'url',** 'file'); 

Và nó hoạt động.

17

Kiểm tra

config> cấu hình

cấu trúc tập tin CodeIgniter

thay

$config['base_url'] = "your Website url"; 

với

$config['base_url'] = "http://".$_SERVER['HTTP_HOST']; 

$config['base_url'] .= preg_replace('@/[email protected]', '', dirname($_SERVER['SCRIPT_NAME'])).'/'; 
0

Bạn có thể sử dụng đường dẫn URL cơ sở mặc định cho bất kỳ máy chủ Đó phải được sử dụng trong thư mục config> file config.php thay thế bạn:

$config['base_url'] = 'index.php'; 

bởi mã này: $config['base_url'] = "http://".$_SERVER['HTTP_HOST']; $config['base_url'] .= preg_replace('@/[email protected]','',dirname($_SERVER['SCRIPT_NAME'])).'/';

nó tự động tìm thấy mẫu thư mục của bạn bất kỳ máy chủ nào

5

Điều đó rất thú vị, Đây là mã nhanh và hoạt động:

index.php

/** 
* Define APP_URL Dynamically 
* Write this at the bottom of index.php 
* 
* Automatic base url 
*/ 
define('APP_URL', ($_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http') . "://{$_SERVER['SERVER_NAME']}".str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME'])); 

config.php

/* 
|-------------------------------------------------------------------------- 
| Base Site URL 
|-------------------------------------------------------------------------- 
| 
| URL to your CodeIgniter root. Typically this will be your base URL, 
| WITH a trailing slash: 
| 
| http://example.com/ 
| 
| If this is not set then CodeIgniter will guess the protocol, domain and 
| path to your installation. 
| 
*/ 
$config['base_url'] = APP_URL; 

ROCKS CodeIgniter !!! :)

+0

Tính năng này có hoạt động với tên miền phụ động không? – WebDevRon

+0

@WebDevRon: Có! –

0

động cơ sở Url (codeigniter)

Chỉ cần ghi đè lên các dòng trong config/config.php như sau:

$ config [ 'BASE_URL'] = 'http://'.$_SERVER['HTTP_HOST'].'/ ';

+0

nếu http://www.spisstek.com/ và sau đó http://spisstek.com/. cho cả hai url nó đang hoạt động tốt ... tôi sẽ sử dụng nó trên trang web của tôi .. liên kết là ở đây ... –

0
$config['base_url'] = "http://".$_SERVER['SERVER_NAME']."/project_name/"; 

cách này bạn cấu hình bạn BASE_URL, sau đó sẽ không phải lo lắng về trong lưu trữ. cả hai hoạt động trong localhost và máy chủ.

+0

nếu bạn cần index.php trong url thêm nó sau khi bạn dự án name.to loại bỏ index.php u cần để thay đổi .htaccess và thay đổi trong trang confiq –

0
Base url set in CodeIgniter for all url 

$config['base_url'] = "http://".$_SERVER['HTTP_HOST']."/"; 
1

ứng dụng> config> config.php

tìm kiếm với $ config [ 'BASE_URL'] và đưa trang web của bạn như "//example.com" (bỏ qua giao thức)

$config['base_url'] = "//someurl.com/"; 

Điều này phù hợp với tôi.

1

này là dành cho máy chủ thứ trang web sống tôi áp dụng trong hostinger.com và làm việc của mình tốt

1: $config['base_url'] = 'http://yoursitename.com';(trong confing.php)

2): src="<?=base_url()?>assest/js/wow.min.js"(theo quan điểm của tập tin)

3): href="<?php echo base_url()?>index.php/Mycontroller/Method"(đối với liên kết url hoặc phương pháp gọi điện thoại)

0

Thay đổi trong config.php như thế này.

$ark_root = "http://".$_SERVER['HTTP_HOST']; 
$ark_root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); 
$config['base_url'] = $ark_root;