Câu trả lời:
Tôi có một thiết lập như thế này:
Sau đó, tôi có một hàm trợ giúp chỉ đơn giản trả về đường dẫn đầy đủ đến tùy thuộc vào thiết lập của tôi, một cái gì đó tương tự như:
ứng dụng / người trợ giúp / Utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
Tôi thường sẽ giữ các thói quen phổ biến tương tự như thế này trong cùng một tệp và tự động tải nó với cấu hình tự động tải của codeigniter.
Lưu ý: trình trợ giúp URL tự động tải để
base_url()
truy cập.
ứng dụng / config / autoload.php:
$autoload['helper'] = array('url','utility');
Sau đó, bạn sẽ có quyền truy cập asset_url()
trong suốt mã của bạn.
$autoload['helper'] = array('url', 'utility');
Không, bên trong thư mục lượt xem không tốt.
Nhìn: Bạn phải có 3 thư mục cơ bản trong dự án của bạn:
hệ thống // Đây là khung CI không có nhiều lý do để chạm vào tệp này
application // đây là nơi logic của bạn đi, các tệp tạo ra ứng dụng ,
công khai // đây phải là tài liệu của bạn
Vì lý do bảo mật, tốt hơn hết là giữ khung của bạn và ứng dụng bên ngoài tài liệu của bạn, (public_html, htdocs, public, www ... vv)
Trong thư mục công cộng của bạn, bạn nên đặt thông tin công khai của mình, những gì trình duyệt có thể thấy, thông thường để tìm các thư mục: hình ảnh, js, css; vì vậy cấu trúc của bạn sẽ là:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
. Có vấn đề gì khi thêm một thư mục có cùng tên.
.htaccess
xóa /index.php?
và gọi thư mục công cộng vớibase_url().'public/yourfolder';
Đây là cách tôi xử lý các tài sản công cộng. Ở đây tôi sử dụng phương thức Bootstrap của Phalcon PHP .
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
Tất cả các yêu cầu cho dự án sẽ được viết lại vào thư mục chung / thư mục làm cho nó trở thành tài liệu gốc. Bước này đảm bảo rằng các thư mục dự án nội bộ vẫn bị ẩn khỏi chế độ xem công khai và do đó loại bỏ các mối đe dọa bảo mật thuộc loại này. - Phalconphp Đốc
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
Các quy tắc sẽ kiểm tra xem tệp được yêu cầu có tồn tại không và nếu có, nó không phải được viết lại bởi mô-đun máy chủ web. - Phalconphp Đốc
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
index.php***
Sửa đổi application
đường dẫn và system
đường dẫn như,
$system_path = '../system';
$application_folder = '../application';
Bây giờ bạn sử dụng public
thư mục nhưbase_url()."public/[YOUR ASSET FOLDER]"
Hi vọng điêu nay co ich :)
/public
vậy tại sao base_url ()."public/[...
! Nó nên được chỉ base_url ()."/[YOUR ASSET FOLDER]"
.
Tôi thường đặt tất cả các tệp của mình vào thư mục "tài sản" trong thư mục gốc của ứng dụng và sau đó tôi đảm bảo sử dụng Asset_Helper để trỏ đến các tệp đó cho tôi. Đây là những gì CodeIgniter gợi ý.
Không ai nói rằng bạn cần sửa đổi .htacces và thêm thư mục trong điều kiện viết lại. Tôi đã tạo một thư mục "công khai" trong thư mục gốc cùng với "system", "application", "index.php". và chỉnh sửa tệp .htaccess như thế này:
RewriteCond $1 !^(index\.php|public|robots\.txt)
Bây giờ bạn chỉ cần gọi <?php echo base_url()."/public/yourdirectory/yuorfile";?>
Bạn có thể thêm thư mục con bên trong thư mục "công khai" tùy thích.
Bất kể bạn đặt tệp CSS ở đâu, bạn chỉ cần sử dụng trình trợ giúp "html" CodeIgniter có tên là link_tag (). Bạn sẽ áp dụng người trợ giúp này một cái gì đó như thế này:
echo link_tag('folder/subfolder/stylesheet.css');
Tùy thuộc vào bạn để xác định vị trí tệp CSS ở nơi thích hợp nhất (theo ý kiến của bạn). Bạn sẽ phải tự động tải trình trợ giúp "html" hoặc tải riêng nó để sử dụng nó.
Mọi người cứ đề xuất việc sử dụng base_url () để đạt được điều này nhưng thực sự không phải là cách "CodeIgniter" để làm điều đó (tôi nghĩ rằng câu hỏi này có một vài bản sao). Điều đó sẽ hoạt động nhưng một trong những lý do để sử dụng khung là sử dụng các hàm được tạo sẵn bên trong nó.
Có rất nhiều người trợ giúp trong codeigniter để làm điều này.
thêm một thư mục bất kỳ tên nào, ví dụ công khai và thêm tệp .htaccess và cho phép ghi từ tất cả ý nghĩa của nó, trong thư mục này tất cả các tệp và tất cả thư mục sẽ không bị lỗi Truy cập bị cấm! sử dụng nó như thế này
<link href="<?php echo base_url(); ?>application/public/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<?php echo base_url(); ?>application/public/js/javascript.js"></script>
(Tôi chưa quen với Codeigniter, vì vậy tôi không biết đây có phải là lời khuyên tốt nhất không)
Tôi giữ các tập tin có sẵn công khai trong thư mục công cộng của tôi. Việc họ ở đó là hợp lý và tôi không muốn sử dụng Codeigniter cho những thứ tôi không cần sử dụng.
Cây thư mục trông như thế này:
Các tệp duy nhất tôi giữ trong / công khai / là index.php của Codeigniter và tệp .htaccess của tôi:
RewriteEngine On
RewriteBase /
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
bạn có thể đặt thư mục css bên trong thư mục assest (bạn đặt tên bất kỳ tên nào) trong thư mục của dự án của bạn là:
- ci_app
- application
- views
- assets
- css
- style.css
... khi bạn muốn tải tệp đó trong một trang, bạn có thể sử dụng hàm base_url () theo cách này:
<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>
và bạn chắc chắn sẽ thêm base_url của dự án của bạn vào tệp config.php như sau:
$config['base_url'] = 'http://localhost/ci_app';
Xin chào, cấu trúc của chúng tôi giống như Ứng dụng, hệ thống, user_guide
tạo một tài sản tên thư mục chỉ gần tất cả các thư mục và sau đó bên trong thư mục tài sản này tạo thư mục css và javascript và hình ảnh đặt tất cả css js của bạn vào bên trong các thư mục
Bây giờ hãy vào tiêu đề.php và gọi css như thế này.
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/touchTouch.css">
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/style.css">
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/camera.css">
Người link_tag()
trợ giúp rõ ràng là cách để làm điều này. Đặt css của bạn vào nơi nó thường thuộc, trong site_root / css / và sau đó sử dụng trình trợ giúp:
Từ các tài liệu CodeIgniter ...
echo link_tag('css/mystyles.css');
Đầu ra
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />