2012-08-25 18 views
25

Tôi đang sử dụng máy chủ Đèn trên máy tính của mình. Tôi bắt đầu sử dụng framework Laravel php. Trong .htaccess của tôi, Nếu tôi sử dụng Tùy chọn + FollowSymLinks, tôi nhận được lỗi 500. Và Nếu tôi nhận xét ra, tôi phải sử dụng index.php trong tất cả các địa chỉ của tôi ..example:Tùy chọn + FollowSymLinks là gì?

/~ytsejam/blog/public/index.php/login

tôi sử dụng Arch Linux. Có cách nào để giải quyết nó không?

chỉnh sửa: Tôi đã giải quyết vấn đề này bằng cách sử dụng máy chủ ảo. Và xóa index.php từ application/config/application.php trong thư mục laravel.

+1

Vâng, nhật ký máy chủ cho biết những gì về 500s? –

+0

Lỗi máy chủ! Máy chủ gặp phải lỗi nội bộ và không thể hoàn thành yêu cầu của bạn. Máy chủ bị quá tải hoặc có lỗi trong tập lệnh CGI. – ytsejam

+0

[Sat Aug 25 10:23:33 2012] [alert] [client :: 1] /home/ytsejam/public_html/blog/public/.htaccess: Các tùy chọn không được phép ở đây – ytsejam

Trả lời

10

Bạn có thể thử tìm kiếm ".htaccess Tùy chọn không được phép tại đây" trên internet.

Một gợi ý tôi thấy (sử dụng google) là:

Kiểm tra để đảm bảo rằng file httpd.conf của bạn có AllowOverride All.

Một tập tin .htaccess làm việc cho tôi trên Mint Linux (đặt trong Laravel thư mục/công):

# Apache configuration file 
# http://httpd.apache.org/docs/2.2/mod/quickreference.html 

# Turning on the rewrite engine is necessary for the following rules and 
# features. "+FollowSymLinks" must be enabled for this to work symbolically. 

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
</IfModule> 

# For all files not found in the file system, reroute the request to the 
# "index.php" front controller, keeping the query string intact 

<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

Hy vọng điều này sẽ giúp bạn. Nếu không, bạn có thể đặt câu hỏi trên diễn đàn Laravel (http://forums.laravel.com/), có một số người thực sự hữu ích ở đó.

3

Máy chủ biết rằng nó sẽ lấy image.png từ thư mục/pictures khi bạn truy cập trang web và duyệt đến thư mục/system/files/images trong trình duyệt web của bạn? Một cái gọi là liên kết tượng trưng là người chịu trách nhiệm cho hành vi này. Một nơi nào đó trong hệ thống của bạn, có một liên kết tượng trưng cho máy chủ của bạn "Nếu khách truy cập yêu cầu /system/files/images/image.png thì hãy hiển thị cho anh ấy /pictures/image.png".

Và vai trò của cài đặt FollowSymLinks trong điều này là gì?

FollowSymLinks liên quan đến bảo mật máy chủ. Khi giao dịch với máy chủ web, bạn không thể để mọi thứ không được xác định. Bạn phải nói ai có quyền truy cập vào cái gì. Cài đặt FollowSymLinks cho máy chủ của bạn biết liệu nó có nên hoặc không nên theo các liên kết tượng trưng. Nói cách khác, nếu FollowSymLinks bị tắt trong trường hợp của chúng tôi, việc duyệt đến tệp /system/files/images/image.png sẽ trở lại tùy thuộc vào các cài đặt khác hoặc lỗi 403 (truy cập bị cấm) hoặc 404 (không tìm thấy).

http://www.maxi-pedia.com/FollowSymLinks

3

Parameter Options FollowSymLinks cho phép bạn có một symlink trong webroot của bạn trỏ đến một số tập tin khác/dir. Với tính năng này bị vô hiệu hóa, Apache sẽ từ chối theo liên kết tượng trưng đó. An toàn hơn Options SymLinksIfOwnerMatch có thể được sử dụng thay thế - điều này sẽ cho phép bạn liên kết chỉ với các tệp khác mà bạn sở hữu.

Nếu bạn sử dụng Options chỉ thị trong .htaccess với thông số đã bị cấm trong cấu hình Apache chính, máy chủ sẽ trả về mã lỗi HTTP 500.

Cho phép .htaccess các tùy chọn được xác định theo chỉ thị AllowOverride trong tệp cấu hình Apache chính. Để cho phép liên kết tượng trưng, ​​chỉ thị này cần được đặt thành All hoặc Options.

Ngoài việc cho phép sử dụng các liên kết tượng trưng, ​​chỉ thị này cũng cần thiết để bật mod_rewrite trong ngữ cảnh .htaccess. Nhưng đối với điều này, cũng có thể sử dụng tùy chọn SymLinksIfOwnerMatch an toàn hơn.

+1

Bạn có biết * tại sao * nó là cần thiết cho 'mod_rewrite' trong các tập tin .htaccess? Tôi đã thấy rằng trình độ trong tài liệu, nhưng không có giải thích khác hơn là "lý do an ninh" ... – jwd

+0

Vâng, nó là dành cho an ninh - kiểm soát việc sử dụng của người dùng 'mod_rewrite' mặc dù các tập tin' .htaccess'. Tốt hơn là nếu nó có tham số riêng biệt, nhưng có lẽ các mô-đun Apache không thể giới thiệu các tham số mới cho 'AllowOverride', vì vậy họ đã chọn một trong các tham số hiện tại ... – Marki555

+1

Tôi đoán câu hỏi của tôi, đặt một cách khác là: một người độc hại làm gì, yêu cầu bổ sung 'AllowOverride' này ngăn cản? Tôi không thấy những gì nó thực sự mua cho bạn ... – jwd