Laravel 5 - Xóa công khai khỏi URL


240

Tôi biết đây là một câu hỏi rất phổ biến nhưng tôi đã không thể tìm ra giải pháp hiệu quả cho Laravel 5. Tôi đã cố gắng di chuyển từ Codeigniter trong một thời gian dài, nhưng quá trình cài đặt phức tạp này khiến tôi không thể thực hiện được.

Tôi không muốn chạy VM, điều này có vẻ khó xử khi chuyển đổi giữa các dự án.

Tôi không muốn đặt gốc tài liệu của mình vào thư mục chung, điều này cũng khó xử khi chuyển đổi giữa các dự án.

Tôi đã thử phương thức mod_rewrite .htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Điều này chỉ mang lại cho tôi một Laravel NotFoundHttpException trong dòng tệp.php10.

Khi tôi thử L4 một lúc trước, tôi đã sử dụng phương pháp di chuyển nội dung của thư mục công cộng vào thư mục gốc. Cấu trúc của L5 khá khác biệt và theo cùng các bước đã phá vỡ hoàn toàn Laravel (máy chủ sẽ chỉ trả về một trang trống).

Có một phương pháp tốt để loại bỏ 'công khai' trong môi trường phát triển:

  1. Hoạt động với L5
  2. Cho phép tôi chuyển đổi giữa các dự án một cách dễ dàng (Tôi thường làm việc trên 2 hoặc 3 bất kỳ lúc nào).

Cảm ơn

** Tôi đang sử dụng MAMP và PHP 5.6.2


1
Cấu trúc thư mục trong hướng dẫn khác với tôi, tôi tưởng tượng anh ta không sử dụng L5? Tôi đã bỏ qua những thay đổi mà anh ấy đã thực hiện đối với tệp Bootstrap / Paths, vì nó không tồn tại. Dự án dường như đang làm việc mặc dù. Bạn có nghĩ rằng điều này là ok?
dùng1537360

lỗi của tôi hãy để tôi thêm câu trả lời cho L5
kam Meat.bar 6/2/2015

không thành công khi cố gắng tương tự
kam Meat.bar 6/2/2015

1
Nó dường như hoạt động bằng cách chỉ sửa đổi các đường dẫn trong tệp index.php, nhưng tôi mới sử dụng Laravel nên rõ ràng không thể nhận xét liệu điều này có ổn định / an toàn hay không.
dùng1537360

Các thư mục / tệp khác được cho là nằm dưới gốc tài liệu của bạn.
Mike Rockétt 7/2/2015

Câu trả lời:


430

Đối với Laravel 5:

  1. Đổi tên server.phptrong thư mục gốc Laravel của bạn thànhindex.php
  2. Sao chép .htaccesstệp từ /publicthư mục vào thư mục gốc của Laravel.

Đó là nó!


104
Vì điều này có thể không an toàn, hãy đảm bảo không ai có thể yêu cầu .envtệp của bạn nếu bạn đang làm điều này trừ khi bạn ổn với những người xem mật khẩu cơ sở dữ liệu của bạn bằng văn bản rõ ràng;)
GabLeRoux 7/03/2015

48
Điều này sẽ không hoạt động nếu bạn đang tham chiếu tài sản của mình bằng cách sử dụng đường dẫn tương đối từ root tức là. "/assets/styles.css", v.v. Tôi vẫn đang vật lộn với việc tìm cách tốt nhất để triển khai nó trên các máy chủ
Ghazanfar Mir

1
Điều này hoạt động ... Nhưng có bất kỳ hậu quả / bất lợi trong việc sử dụng này? Nhiều người đang đề xuất thiết lập máy chủ ảo hoặc sao chép tệp theo cách thủ công, v.v ... Điều này có hoạt động trong sản xuất không?
Bogz

1
@GabLeRoux <Files "log.txt">Order Allow,DenyDeny from all</Files>giải quyết vấn đề bạn đã giải quyết. Bây giờ có an toàn hay rủi ro nào nữa không?
Bướm

1
@Butostonit phụ thuộc vào cấu hình máy chủ của bạn. Ở trên sẽ chỉ chặn log.txt. Chỉ cần chắc chắn rằng bạn chặn dữ liệu nhạy cảm từ công chúng. Nếu bạn sử dụng Laravel và đọc tài liệu cẩn thận , webroot của bạn sẽ như thế nào project/public. Có một cái nhìn để thảo luận về stackoverflow qa . Thiết lập máy chủ web của bạn và thử https://example.com/.envchỉ trong trường hợp. Nếu bạn thấy mật khẩu của mình, hãy xem xét mọi thứ bị xâm phạm và thay đổi tất cả mật khẩu.
GabLeRoux

126

Tôi đã giải quyết vấn đề bằng 2 câu trả lời:

  1. Đổi tên server.php thành index.php (không sửa đổi)
  2. Sao chép .htaccess từ thư mục công cộng vào thư mục gốc (như rimon.ekjon đã nói bên dưới)
  3. Thay đổi .htaccess nó một chút như sau cho thống kê:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    
    RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/public/
    RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]

    Nếu có bất kỳ tệp tĩnh nào khác cần thiết, chỉ cần thêm phần mở rộng vào danh sách khai báo trước đó


1
xin chào @KA_lin. Làm cách nào để ngăn người khác xem .env như vậy localhost / oap / .env
Fokwa Tốt nhất

8
Hmmm ... thửRewriteRule ^.env - [F,L,NC]
ka_lin

2
Hoặc <Files ~ "\.env$"> Order allow,deny Deny from all </Files>
ka_lin

Cảm ơn rất nhiều @ka_lin, có cách nào để xóa quyền truy cập thông qua / công khai / không? như www.yoursite.com hoạt động nhưng www.yoursite.com/public cũng hoạt động, có thể xóa cái cuối cùng không?
adaba

8
Nó đang hoạt động nhưng css, js và hình ảnh không tải
Chetan Khandla

93

Trong Laravel 5.5 tạo tệp .htacess trong thư mục gốc của bạn và đặt mã sau: - Liên kết tham chiếu

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1 

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php

</IfModule>

5
Câu trả lời hay nhất! người duy nhất làm việc trong ví dụ của tôi, nó chắc chắn sẽ có nhiều phiếu hơn
FiliusBonacci

Cảm ơn đây là công việc cho tôi. Nhưng tôi muốn biết nó có vấn đề bảo mật hay không.
rahul singh Chauhan

@rahulsinghChauhan niềm vui của tôi. Tôi không biết về vấn đề bảo mật nhưng nó phải được bảo mật.
La Mã

2
Quy tắc này RewriteRule ^ ^$1 [N] làm gì?
gonzo

Đây là người duy nhất làm việc cho tôi ... cảm ơn bạn rất nhiều
Arshad Ameen

84

ĐỪNG!

BẠN THỰC SỰ KHÔNG NÊN đổi tên server.phptrong thư mục gốc Laravel của bạn sang index.php và sao chép .htaccesstệp từ /publicthư mục vào thư mục gốc của Laravel !!!

Bằng cách này, mọi người đều có thể truy cập một số tệp của bạn ( .envví dụ). Hãy thử nó. Bạn không muốn điều đó!


LÀM

Thay vào đó, bạn nên tạo một .htaccesstập tin trong thư mục gốc của bạn như thế này:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]

Điều này sẽ âm thầm viết lại tất cả các URI cơ sở của bạn vào /publicthư mục. Ngay cả tất cả các Tiêu đề , ví dụ như Tiêu đề ủy quyền HTTP và tất cả các tham số URI tùy chọn cũng sẽ âm thầm được chuyển vào /publicthư mục.

Đó là tất cả

Xin lưu ý khi thiết lập dự án Laravel với Docker: bạn sẽ không cần phải làm điều này.


2
Nó đang hoạt động tốt trong sản xuất nhưng nó không hoạt động ở địa phương bất kỳ đề nghị?
Haritsinh Gohil

2
Điều này là hoàn hảo làm việc! địa phương và máy chủ cảm ơn sự giúp đỡ bảo mật!
Ghanshyam Nakiya

1
Xin chào, @DerkJanSpeelman Tôi đang cố tải lên các tệp laravel của mình trong thư mục con trong máy chủ lưu trữ của mình như: (example.com/projects/laravel/blog) trong trường hợp đó, khách truy cập phải truy cập example.com/projects/laravel/blog/ công khai, do đó tôi đặt tệp .htaccess với mã của bạn trong thư mục gốc của thư mục blog và muốn nó chuyển hướng đến thư mục công cộng. Nhưng nó không hoạt động. Đây là lỗi xảy ra: URL được yêu cầu / công khai / không được tìm thấy trên máy chủ này. Làm sao tôi có thể giải quyết việc này ?
Shovon Das

1
Câu trả lời này được đánh giá thấp. Nâng cao cho Bold và tô sáng Đừng. Nó hoạt động rất tốt.
Varun Ved

2
Câu trả lời hoàn hảo
alnassre

43

Cách dễ dàng để loại bỏ công khai từ url 5 laravel. Bạn chỉ cần cắt index.php và .htaccess khỏi thư mục công cộng và dán nó vào thư mục gốc, đó là tất cả và thay thế hai dòng trong index.php như

require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

Lưu ý : Phương pháp trên chỉ dành cho người mới bắt đầu vì họ có thể gặp phải vấn đề trong việc thiết lập máy chủ ảo và Giải pháp tốt nhất là thiết lập máy chủ ảo trên máy cục bộ và trỏ nó vào thư mục chung của dự án.


1
Sau khi css không tải, bcoz tất cả các css đều ở chế độ công khai và công khai sẽ bị xóa khỏi url
Ông Tomar

1
Bạn có thể đặt "công khai /" trước các tệp js hoặc css trong khi tải, ví dụ: Html :: script ("công khai / js / ....."); - Nhưng giải pháp tốt nhất sẽ là máy chủ ảo ...
Muhammad Sadiq

39

@ rimon.ekjon nói:

Đổi tên server.php trong thư mục gốc Laravel của bạn thành index.php và sao chép tệp .htaccess từ thư mục / công khai vào thư mục gốc của Laravel. -- Đó là nó !! :)

Điều đó làm việc cho tôi. Nhưng tất cả các tệp tài nguyên trong / thư mục chung không thể tìm và yêu cầu các url không hoạt động, vì tôi đã sử dụng trình trợ giúp của property ().

Tôi đã thay đổi hàm /Illuminate/Foundation/helpers.php/asset () như sau:

function asset($path, $secure = null)
{
    return app('url')->asset("public/".$path, $secure);
}

Bây giờ mọi thứ hoạt động :)

Cảm ơn bạn @ rimon.ekjon và tất cả các bạn.


3
Đây không phải là một cách tốt để giải quyết vấn đề này, vì bạn đang cố gắng cập nhật trong thư mục nhà cung cấp không phải là thông lệ tốt.
Shadman

1
bạn chỉ cần thêm RewriteRule ^(.*)$ public/$1 [L]vào tệp .htaccess mà bạn đã sao chép từ thư mục công cộng, bằng cách xóa dòng nàyRewriteRule ^(.*)/$ /$1 [L,R=301]
Shadman

29

Chỉ cần tạo tệp .htaccess tại root và thêm các dòng này vào nó

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Đó là nó!

Đoạn mã trên hoạt động trên thư mục gốc public_html. Phải nói rằng tệp laravel lõi của bạn phải nằm trong thư mục public_html, nếu thư mục của bạn trông giống như public_html / laravelapp / public và nếu bạn đặt mã ở trên trong laravelapp thì nó sẽ không hoạt động. Do đó, bạn phải sao chép tất cả các tệp cốt lõi của mình vào public_html và đặt tệp .htaccess ở đó.

Nếu bạn muốn giữ mã trong thư mục con thì bạn có thể tạo một tên miền phụ thì mã này cũng sẽ hoạt động cho điều đó.


Tôi đã trả lời dưới đây trước khi đọc câu trả lời của bạn và đây phải là câu trả lời được chấp nhận. Không có thay đổi tập tin: chỉ là một quy tắc đơn giản, thông minh.
Brigo

@Raham url hiện tại của bạn là gì?
Abhinav Saraswat

2
Chỉ muốn thêm một mô tả ngắn trên đầu công việc của quý ông này. Đoạn mã trên hoạt động trên thư mục root_html gốc (tôi cũng gặp vấn đề). Phải nói rằng tệp laravel lõi của bạn phải nằm trong thư mục public_html, tôi đã nhầm lẫn rằng thư mục của tôi trông giống như public_html / laravelapp / public nếu bạn đặt mã ở trên trong laravelapp thì nó không hoạt động. Do đó, bạn phải sao chép tất cả các tệp cốt lõi của mình vào public_html và đặt tệp .htaccess ở đó. Tham khảo lưu trữ centOS và Cpanel cho laravel.
Deepesh Thapa

Những sai sót khi sử dụng phương pháp này là gì?
Script47

1
Làm việc như một cơ duyên đối với tôi, tôi chỉ có webshost cPanel và không thể thay đổi RootDirectory cho Apache. Cảm ơn ! đơn giản và an toàn nhất Điều này sẽ không cho phép xem nội dung thư mục gốc của bạn
Vincent Decaux

27

Tạo .htaccesstập tin trong thư mục gốc và đặt mã giống như bên dưới.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1 

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php
</IfModule>

1
Tôi thực sự khuyên bạn nên giải pháp này.
TheLastCodeBender

1
Tôi cũng đề xuất giải pháp này
iglesiasedd

Cảm ơn bạn rất nhiều. Điều này là hoàn hảo (y)
Hoàng tử Hồi giáo Prappo

3
nó hoạt động tốt, nhưng tệp .env vẫn có thể truy cập trực tiếp từ URL.
Manoj Singh

nó là một giải pháp an toàn?
Trưởng nhóm lập trình PHP Sr.

23

1) Tôi chưa tìm thấy phương pháp làm việc để di chuyển thư mục công cộng trong L5 . Trong khi bạn có thể sửa đổi một số thứ trong bootstrapindex.php , nó xuất hiện một số hàm trợ giúp dựa trên giả định rằng thư mục công cộng đang ở đó. Thành thật mà nói, bạn thực sự không nên di chuyển thư mục công cộng.

2) Nếu bạn sử dụng MAMP thì bạn nên tạo vhost mới cho từng dự án, mỗi phục vụ thư mục công cộng đó. Sau khi tạo, bạn truy cập từng dự án bằng tên máy chủ được xác định của bạn như thế này:

http://project1.dev
http://project2.dev

15

Có thể xóa url công khai trong laravel5. Thực hiện theo các bước sau:

Bước 1. sao chép tất cả các tệp từ công khai và dán vào thư mục gốc

bước 2.open index.phpthay thế bằng

 require __DIR__.'/../bootstrap/autoload.php';

đến

 require __DIR__.'/bootstrap/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

đến

$app = require_once __DIR__.'/bootstrap/app.php';

Và loại bỏ tất cả bộ nhớ cache và cookie.


Xin chào, tôi đã thử phương pháp của bạn, thực hiện các bước trên nhưng nó hiển thị các lỗi sau: Cảnh báo: allow_once (D: \ Project \ laravel / public / index.php): không thể mở luồng: Không có tệp hoặc thư mục như vậy trong D: \ Project \ laravel \ server.php trên dòng 21 Lỗi nghiêm trọng: allow_once (): Yêu cầu mở không thành công 'D: \ Project \ laravel / public / index.php' (include_path = '.; C: \ xampp \ php \ PEAR' ) trong D: \ Project \ laravel \ server.php trên dòng 21
Ali Shahzad

Đây không phải là một câu trả lời hoàn hảo, thay vào đó là một cách không an toàn.
Rohit

11

Giả sử bạn đã đặt tất cả các tệp và thư mục khác trong một thư mục có tên 'locale'.

nhập mô tả hình ảnh ở đây

Chỉ cần truy cập index.php và tìm hai dòng sau:

require __DIR__.'/../bootstrap/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

và thay đổi chúng thành này:

require __DIR__.'/locale/bootstrap/autoload.php';

$app = require_once __DIR__.'/locale/bootstrap/app.php';

11

Dưới đây là giải pháp tốt nhất và ngắn nhất phù hợp với tôi vào tháng 5 năm 2018 cho Laravel 5.5

  1. chỉ cần cắt .htaccesstập tin của bạn từ thư mục / công khai sang thư mục gốc và thay thế nội dung của nó bằng đoạn mã sau:

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
           Options -MultiViews
        </IfModule>
    
        RewriteEngine On
    
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)/$ /$1 [L,R=301]
    
        RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ server.php [L]
    
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_URI} !^/public/
        RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]
    </IfModule>
  2. Chỉ cần lưu .htaccesstập tin và đó là tất cả.

  3. Đổi tên server.phptập tin của bạn thành index.php. đó là tất cả tận hưởng!


9

Cách tiếp cận TỐT NHẤT: Tôi sẽ không khuyên bạn nên xóa công khai, thay vào đó on local computer create a virtual host point to public directoryon remote hosting change public to public_html and point your domain to this directory. Lý do, toàn bộ mã laravel của bạn sẽ được bảo mật vì một cấp xuống thư mục công cộng của bạn :)

PHƯƠNG PHÁP 1:

Tôi chỉ đổi tên server.phpthành index.phpvà nó hoạt động

PHƯƠNG PHÁP 2:

Điều này hoạt động tốt cho tất cả các phiên bản laravel ...

Đây là cấu trúc thư mục của tôi,

/laravel/
... app
... bootstrap
... public
... etc

Thực hiện theo các bước đơn giản

  1. di chuyển tất cả các tệp từ thư mục công cộng sang root / laravel /
  2. Bây giờ, không cần thư mục công cộng, vì vậy tùy chọn bạn có thể xóa nó ngay bây giờ
  3. bây giờ hãy mở index.php và thực hiện các thay thế sau

yêu cầu TRỰC TIẾP . '/ .. / bootstrap / autoload.php';

đến

yêu cầu TRỰC TIẾP . '/ bootstrap / autoload.php';

$ app = allow_once TRỰC TIẾP . '/ .. / bootstrap / start.php';

đến

$ app = allow_once DIR . '/ bootstrap / start.php';

  1. Bây giờ hãy mở bootstrap / path.php và thay đổi đường dẫn thư mục chung:

'công khai' => TRỰC TIẾP . '/ .. / công khai',

đến

'công khai' => TRỰC TIẾP . '/ ..',

và đó là nó, bây giờ hãy thử http: // localhost / laravel /


Nó ổn cho mọi thứ. nhưng lệnh artisan không hoạt động, chỉ là nó hiển thị "Không thể mở tệp đầu vào: artisan". Có gợi ý nào không?
Kabir Hossain

Phương pháp này hiệu quả, Nếu bạn đồng ý để lộ thông tin cơ sở dữ liệu của mình cho người dùng. localhost / laravel / .env
MasoodUrRehman

8

4 cách tốt nhất để xóa công khai khỏi URL.

Nếu bạn đã sử dụng bất kỳ thủ thuật nào khác để xóa công khai khỏi URL như thay đổi tên của server.php thành index.php và thay đổi thành đường dẫn tệp lõi. Rõ ràng, đừng làm điều đó. Vậy thì tại sao Laravel không đưa ra giải pháp như thế này vì đó không phải là cách thích hợp để làm điều đó.

1) Xóa công khai khỏi URL bằng cách sử dụng htaccess trong Laravel

Bằng cách thêm tệp .htaccess vào thư mục gốc, Bạn có thể truy cập trang web mà không cần công khai

<ifmodule mod_rewrite.c>
    <ifmodule mod_negotiation.c>
        Options -MultiViews
    </ifmodule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1 

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php

</ifmodule>

2) Xóa công chúng bằng cách tạo một máy chủ ảo trong địa phương của bạn

Tôi đang đưa ra bản demo ở đây cho hệ điều hành Window. Nhưng tôi sẽ cố gắng xác định một bước để bất kỳ ai cũng có thể dễ dàng làm theo bước này. Bạn cũng có thể nghiên cứu trên google cho cùng một hệ điều hành cụ thể.

Bước 1: Truy cập C: \ Windows \ system32 \ driver \ etc \ mở tệp "hosts" trong chế độ Quản trị viên.

Bước 2: Thêm mã sau vào nó. Ở đây, tôi cung cấp cho bạn bản demo của bản demo tên miền projectname.local, bạn có thể chỉ định bất kỳ tùy thích nào. Chỉ cần làm cho nó liên tục ở mọi nơi.

127.0.0.1  projectname.local

Bước 3: Bây giờ, hãy đến, C:\xampp\apache\conf\extracho người dùng xampp và cho người dùng ướt "C:\wamp\bin\apache\Apache2.4.4\conf\extra"và mở "httpd-vhosts.conf"tệp. Bây giờ thêm mã sau vào nó.

Ghi chú: Thay đổi gốc Tài liệu theo dự án của bạn cũng thêm tên miền khi bạn xác định vào tệp "máy chủ".

<VirtualHost projectname.local>
      ServerAdmin projectname.local
      DocumentRoot "C:/xampp/htdocs/projectdir"
      ServerName projectname.local
      ErrorLog "logs/projectname.local.log"
      CustomLog "logs/projectname.local.log" common
 </VirtualHost>

Bước 4: Cuối cùng nhưng bước quan trọng là khởi động lại Xampp hoặc Wamp của bạn và truy cập url như thế http://projectname.localvà Laravel của bạn sẽ trả lời mà không cần URL công khai.


3) Xóa công chúng bằng cách chạy lệnh trong Laravel

Nếu bạn đang làm việc tại địa phương thì bạn không cần phải làm bất cứ điều gì chỉ cần chạy lệnh sau từ thiết bị đầu cuối hoặc công cụ dòng lệnh của bạn. Sau đó, bạn có thể truy cập trang web của mình bằng URL được cung cấp bằng dòng lệnh.

   > php artisan serve

Nếu bạn sẵn sàng chạy dự án của mình trên IP cụ thể thì bạn cần chạy lệnh sau. Nếu bạn đang làm việc trên mạng LAN thì nếu bạn muốn cho phép người khác truy cập trang web của mình từ địa phương thì bạn chỉ cần kiểm tra địa chỉ IP của mình bằng dòng lệnh bằng cách chạy "ipconfig" sau khi nhận địa chỉ IP của bạn chạy theo lệnh.

> php artisan serve --host=192.168.0.177

Nếu bạn sẵn sàng chạy dự án của mình trên một IP cụ thể với cổng cụ thể thì bạn cần phải thực hiện lệnh sau.

> php artisan serve --host=192.168.0.177 --port=77

4) Xóa công khai trên máy chủ được lưu trữ hoặc trên cpanel

nhập mô tả hình ảnh ở đây

Sau khi hoàn thành dự án bạn cần lưu trữ dự án trên máy chủ, sau đó bạn chỉ cần đặt gốc tài liệu trên miền của mình vào thư mục chung. Kiểm tra ảnh chụp màn hình dưới đây.

Theo ảnh chụp màn hình nếu bạn không có bất kỳ thư mục dự án nào vào public_html thì bạn chỉ cần đặt gốc tài liệu của mình như "public_html/public" .

Tham khảo lấy từ đây


1
Tất cả bốn cách đều tốt, nhưng tôi đã giải quyết vấn đề của mình bằng cách sử dụng giải pháp đầu tiên.
Manisha

7

Tôi muốn thêm vào @Humble Learner và lưu ý rằng vị trí thích hợp để "sửa" đường dẫn url cho tài sản là /Illuminate/Routing/UrlGenerator.php/asset ().

Cập nhật phương thức cho phù hợp:

public function asset($path, $secure = null)
{
    if ($this->isValidUrl($path)) return $path;
    $root = $this->getRootUrl($this->getScheme($secure));
    return $this->removeIndex($root).'/public/'.trim($path, '/');
}

Điều này sẽ sửa các kịch bản, kiểu và đường dẫn hình ảnh. Bất cứ điều gì cho đường dẫn tài sản.


6

Để người dùng XAMPP xóa công khai khỏi url mà không cần chạm vào hệ thống tệp mặc định của laravel là đặt Máy chủ ảo cho ứng dụng của bạn để thực hiện việc này, hãy làm theo các bước sau

  1. Mở ứng dụng bảng điều khiển XAMPP và dừng Apache. Xin lưu ý rằng các máy Windows muộn có thể chạy nó như một dịch vụ, vì vậy hãy chọn hộp bên trái mô-đun Apache.

  2. Điều hướng đến C:/xampp/apache/conf/extrahoặc bất cứ nơi nào tập tin XAMPP của bạn được đặt.

  3. Mở tệp có tên httpd-vhosts.conf bằng trình chỉnh sửa văn bản.

  4. Xung quanh dòng 19 tìm # NameVirtualHost *:80và bỏ ghi chú hoặc xóa hàm băm.

  5. Ở dưới cùng của tập tin dán đoạn mã sau:

<VirtualHost *>
    ServerAdmin admin@localhost.com
    DocumentRoot "C:/xampp/htdocs" # change this line with your htdocs folder
    ServerName localhost
    ServerAlias localhost
    <Directory "C:/xampp/htdocs">
        Options Indexes FollowSymLinks Includes ExecCGI
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
  1. Bây giờ bạn có thể sao chép và dán mã bên dưới để thêm các thư mục Máy chủ ảo của mình. Ví dụ: tôi đang làm việc trên một trang web có tên Eatery Engine, vì vậy đoạn mã sau sẽ cho phép tôi làm việc với các tên miền phụ trên bản cài đặt cục bộ của mình:
<VirtualHost eateryengine.dev>
    ServerAdmin admin@localhost.com
    DocumentRoot "C:/xampp/htdocs/eateryengine" # change this line with your htdocs folder
    ServerName eateryengine.dev
    ServerAlias eateryengine.dev
    <Directory "C:/xampp/htdocs/eateryengine">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
  1. Tiếp theo, hãy đến tập tin máy chủ Windows của bạn để chỉnh sửa HOSTS của bạn. tập tin sẽ được đặt tạiC:/Windows/System32/drivers/etc/hosts , nơi lưu trữ là tập tin. Mở nó bằng notepad.
  2. Tìm kiếm độ phân giải tên #localhost được xử lý trong chính DNS.

127.0.0.1 localhost

độ phân giải tên localhost được xử lý trong chính DNS.

127.0.0.1       localhost
127.0.0.1       eateryengine.dev #change to match your Virtual Host.
127.0.0.1       demo.eateryengine.dev #manually add new sub-domains.
  1. Khởi động lại Apache và kiểm tra mọi thứ.

Bài viết gốc có thể được tìm thấy ở đây


5

Luôn có một lý do để có một thư mục công khai trong thiết lập Laravel, tất cả những thứ liên quan đến công chúng nên có trong thư mục công cộng,

Không trỏ địa chỉ IP / tên miền của bạn vào thư mục gốc của Laravel mà trỏ nó vào thư mục chung. Không an toàn khi trỏ Ip máy chủ vào thư mục gốc. Bởi vì trừ khi bạn viết các hạn chế trong .htaccess, người ta có thể dễ dàng truy cập các tệp khác.,

Chỉ cần viết điều kiện ghi lại trong .htaccesstệp và cài đặt mô-đun viết lại và kích hoạt mô-đun viết lại, vấn đề thêm công khai trong tuyến sẽ được giải quyết.


3

Tôi biết rằng có rất nhiều giải pháp cho vấn đề này. Giải pháp tốt nhất và dễ nhất là thêm tệp .htaccess vào thư mục gốc thư mục .

Tôi đã thử các câu trả lời mà chúng tôi cung cấp cho vấn đề này tuy nhiên tôi đã gặp phải một số vấn đề với auth: api Guard ở Laravel.

Đây là giải pháp cập nhật:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php
</IfModule>

Tạo tệp .htaccess trong thư mục gốc của bạn và thêm mã này. Và mọi thứ đều ổn


2

Ấu trùng 5.5

Sau khi cài đặt Laravel lần đầu tiên, tôi đã phải đối mặt với "vấn đề thư mục chung" nổi tiếng và tôi đã đưa ra giải pháp này, theo ý kiến ​​cá nhân của tôi , là "sạch" hơn những cái khác tôi tìm thấy trên Web.


Thành tựu

  • Không có publictừ trong URI
  • Bảo vệ .envtập tin chống lại những người tò mò

Tất cả mọi thứ có thể được thực hiện chỉ cần chỉnh sửa .htaccessbằng cách sử dụng mod_rewritevà bốn quy tắc đơn giản.


Các bước

  1. Di chuyển .htaccesstệp public/.htaccesstrong thư mục gốc
  2. Chỉnh sửa nó như dưới đây

Tôi đã nhận xét tất cả mọi thứ, vì vậy nó cũng phải rõ ràng (tôi hy vọng) cho những người chưa bao giờ sử dụng mod_rewrite(không phải tôi là một chuyên gia, tất cả ngược lại). Ngoài ra, để hiểu các quy tắc, phải rõ ràng rằng, trong Laravel, nếu Bill kết nối với https://example.com, https://example.com/index.phpđược tải. Tập tin này chỉ chứa lệnh header("refresh: 5; https://example.com/public/"), sẽ gửi yêu cầu đến https://example.com/public/index.php. Thứ hai index.phpnày chịu trách nhiệm tải bộ điều khiển và những thứ khác.

# IfModule prevents the server error if the app is moved in an environment which doesn’t support mod_rewrite
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # RULES ORIGINALLY IN public/.htaccess ---
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
#    RewriteCond %{REQUEST_FILENAME} !-d
#    RewriteCond %{REQUEST_FILENAME} !-f
#    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    # --- END

    # PERSONAL RULES ---
    # All the requests on port 80 are redirected on HTTPS
    RewriteCond %{SERVER_PORT} ^80$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

    # When .env file is requested, server redirects to 404
    RewriteRule ^\.env$ - [R=404,L,NC]

    # If the REQUEST_URI is empty (means: http://example.com), it loads /public/index.php
    # N.B.: REQUEST_URI is *never* actually empty, it contains a slash that must be set as match as below
    # .* means: anything can go here at least 0 times (= accepts any sequence of characters, including an empty string)
    RewriteCond %{REQUEST_URI} ^/$
    RewriteRule ^(.*) /public/index.php [L]

    # If the current request is asking for a REQUEST_FILENAME that:
    # a) !== existent directory
    # b) !== existent file
    # => if URI !== css||js||images/whatever => server loads /public/index.php, which is responsible to load the app and the related controller
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule !^(css|js|images|media)/(.*)$ /public/index.php [L,NC]

    # If the current request is asking for a REQUEST_FILENAME that:
    # a) !== existent directory
    # b) !== existent file
    # => if URI == css||js||images[=$1]/whatever[=$2] => server loads the resource at public/$1/$2
    # If R flag is added, the server not only loads the resource at public/$1/$2 but redirects to it
    # e.g.: bamboo.jpg resides in example.com/public/media/bamboo.jpg
    #       Client asks for example.com/media/bamboo.jpg
    #       Without R flag: the URI remains example.com/media/bamboo.jpg and loads the image
    #       With R flag: the server redirects the client to example.com/public/media/bamboo.jpg and loads the image
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(css|js|images|media)/(.*)$ /public/$1/$2 [L,NC]
    # --- END

</IfModule>

Quy tắc sau (ban đầu trong public/.htaccess) có thể bị xóa. Trên thực tế, cùng một quy tắc được khám phá một cách chi tiết hơn trong hai quy tắc cuối cùng.

# Handle Front Controller...
#    RewriteCond %{REQUEST_FILENAME} !-d
#    RewriteCond %{REQUEST_FILENAME} !-f
#    RewriteRule ^ index.php [L]

EDIT: Tôi đã bỏ lỡ giải pháp của Abhinav Saraswat và câu trả lời của anh ấy nên được chấp nhận. Chỉ cần một quy tắc đơn giản và rõ ràng sẽ chuyển hướng tất cả lưu lượng truy cập vào thư mục công cộng mà không sửa đổi bất kỳ tệp nào.


2

Đầu tiên bạn có thể sử dụng các bước này

Đối với Laravel 5:

1. Đổi tên server.php trong thư mục gốc Laravel của bạn thành index.php

2. Sao chép tệp .htaccess từ thư mục / công khai vào thư mục gốc của Laravel.

nguồn: https://stackoverflow.com/a/28735930

Sau khi bạn làm theo các bước này thì bạn cần thay đổi tất cả đường dẫn css và script, nhưng điều này sẽ mệt mỏi.

Đề xuất giải pháp : đơn giản là bạn có thể thay đổi nhỏhelpers::asset chức năng.

Đối với điều này :

  1. mở vendor\laravel\framework\src\Illuminate\Foundation\helpers.php

  2. dòng goto 130

  3. viết "public/".$paththay vì $path,

    function asset($path, $secure = null){
       return app('url')->asset("public/".$path, $secure);
    }

2
Quy tắc số 1: Không bao giờ chỉnh sửa tệp lõi. Ngay cả khi nó trông dễ dàng và tốt đẹp bây giờ, bạn sẽ trả tiền sau.
Janaka Dombawela

@JanakaDombawela Tôi không nghĩ như vậy bởi vì:
Ferhat KOÇER

@JanakaDombawela Tôi không nghĩ như vậy bởi vì: Senerio 1: Nếu nhà phát triển có kinh nghiệm: Mã nguồn mở dành cho công việc này Senerio 2: Nếu nhà phát triển là thiếu niên, nhà phát triển phải chỉnh sửa thành mã nguồn để có kinh nghiệm
Ferhat KOÇER

2
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteRule ^(.*)$ public/$1 [L]
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Kích hoạt mô-đun mod_rewrite với

sudo a2enmod rewrite

và khởi động lại apache

sudo service apache2 restart

Để sử dụng mod_rewrite từ trong các tệp .htaccess (đây là trường hợp sử dụng rất phổ biến), hãy chỉnh sửa Virtualhost mặc định bằng

sudo nano /etc/apache2/sites-available/000-default.conf

Bên dưới "DocumentRoot / var / www / html" thêm các dòng sau:

<Directory "/var/www/html">
AllowOverride All
</Directory>

Khởi động lại máy chủ một lần nữa:

sudo service apache2 restart

1

Tôi đã đọc một số bài viết trước đây và nó hoạt động tốt nhưng thực sự không biết có an toàn hay không

    a. Create new folder local.
    b. Move all project into the local folder expect public folder.
    c. Move all the content of public folder to project root.
    d. Delete the blank public folder
    f. Edit the index file. 

Chỉnh sửa index.php

require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

đến

require __DIR__.'/local/bootstrap/autoload.php';
$app = require_once __DIR__.'/local/bootstrap/app.php';

1

Ngay cả khi tôi không khuyên bạn nên đặt Laravel vào thư mục gốc, vẫn có một số trường hợp không thể tránh được; đối với những trường hợp đó, các phương thức trên không hoạt động đối với tài sản, vì vậy tôi đã khắc phục nhanh việc thay đổi htaccess: sau khi sao chép server.php sang index.php chỉnh sửa tệp .htaccess như vậy:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    ### fix file rewrites on root path ###
    #select file url
    RewriteCond %{REQUEST_URI} ^(.*)$
    #if file exists in /public/<filename>
    RewriteCond %{DOCUMENT_ROOT}/public/$1 -f
    #redirect to /public/<filename>
    RewriteRule ^(.*)$ public/$1 [L]
    ###############

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...

    #RewriteCond %{REQUEST_FILENAME} -d # comment this rules or the user will read non-public file and folders!
    #RewriteCond %{REQUEST_FILENAME} -f #
    RewriteRule ^ index.php [L]
</IfModule>

Đây là một sửa chữa nhanh chóng tôi phải thực hiện để bất cứ ai cũng được chào đón để nâng cấp nó.


1

Vấn đề là nếu bạn gõ / công khai và nó vẫn sẽ có sẵn trong url, do đó tôi đã tạo một bản sửa lỗi nên được đặt trong public / index.php

  $uri = urldecode(
     parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
  );

  if(stristr($uri, '/public/') == TRUE) {

    if(file_exists(__DIR__.'/public'.$uri)){

    }else{

      $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
      $actual_link = str_replace('public/', '',$actual_link);
      header("HTTP/1.0 404 Not Found");
      header("Location: ".$actual_link."");
      exit();
      return false;
   }}

sự an tâm về mã này sẽ xóa công khai khỏi url và sẽ cung cấp 404 và sau đó chuyển hướng đến url mà không công khai


0

Một phương pháp khác mà tôi sử dụng là tạo một liên kết tượng trưng (trong Linux, không biết về Win) bằng cách sử dụng lệnh ln trong htdocs hoặc www tức là ln projectname/public project Trang web có thể truy cập qua localhost / dự án


0

Bạn có thể xóa từ khóa công khai khỏi url bằng nhiều phương pháp khác nhau.

1) Nếu bạn đang sử dụng lưu trữ chuyên dụng và bạn có quyền truy cập root thì Bạn có thể xóa từ khóa công khai khỏi url bằng Virtual Host. Bạn nên cung cấp đường dẫn DocumentRoot với công khai. Vì vậy, điều này sẽ bắt đầu chỉ mục từ thư mục công cộng và loại bỏ nó khỏi url.

<VirtualHost *:80>
    ServerAdmin info@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/{yoursourcedirectory}/public

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

2) Nếu bạn không có quyền truy cập root của hosting thì bạn nên tạo một tập tin .htaccess mới trong thư mục gốc của bạn và đặt mã như dưới đây

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>

Bạn có thể tham khảo thêm ở đây.


0

Tạo tập tin .htaccess trong thư mục gốc và đặt mã giống như bên dưới.

<IfModule mod_rewrite.c>
 #Session timeout

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php

</IfModule>

Tạo tập tin .htaccess trong thư mục / công khai và đặt mã giống như bên dưới.

<IfModule mod_rewrite.c>
  <IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
  </IfModule>

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

-1

Tôi tìm thấy giải pháp làm việc hiệu quả nhất cho vấn đề này.

Chỉ cần chỉnh sửa .htaccesstrong thư mục gốc và viết mã sau đây. Không có gì khác yêu cầu

RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]

<IfModule php7_module>
   php_flag display_errors Off
   php_value max_execution_time 30
   php_value max_input_time 60
   php_value max_input_vars 1000
   php_value memory_limit -1
   php_value post_max_size 8M
   php_value session.gc_maxlifetime 1440
   php_value session.save_path "/var/cpanel/php/sessions/ea-php71"
   php_value upload_max_filesize 2M
   php_flag zlib.output_compression Off
</IfModule>

-1

Tôi đã thử một số giải pháp ở đây và tìm thấy htaccess hoạt động cho laravel 5.2, như thế này:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]



RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]
RewriteRule ^.env - [F,L,NC]
RewriteRule ^app - [F,L,NC]
RewriteRule ^bootstrap - [F,L,NC]
RewriteRule ^config - [F,L,NC]
RewriteRule ^database - [F,L,NC]
RewriteRule ^resources - [F,L,NC]
RewriteRule ^vendor - [F,L,NC]

Khi bạn có một tập tin hoặc thư mục khác bị cấm chỉ cần thêm

RewriteRule ^your_file - [F,L,NC]

-1

Bạn không cần phải làm gì nhiều, chỉ cần tạo tệp .htaccess trên thư mục gốc và dán / lưu bên dưới;

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Điều này chuyển hướng tôi đến / công cộng / công cộng
zanderwar

@zanderwar, làm ơn phiên bản Laravel là gì? Ngoài ra, tôi hy vọng bạn không có dự án của bạn trên một thư mục con từ thư mục chính?
Victor Ifeanyi Ejiogu

Project là root, phiên bản là 5.6. * - Mặc dù vậy, nó nằm trên một tên miền phụ, trên lưu trữ được chia sẻ; Thật không may, cài đặt cPanel này buộc các tên miền phụ phải có một thư mục trong public_html
zanderwar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.