Làm cách nào để cho phép sử dụng .htaccess trong Apache trên Ubuntu?


15

Tôi đang cố gắng cho phép sử dụng tệp htaccess trong Ubuntu 14.04 (Apache 2.4.7). Tôi biết rằng câu hỏi này có nhiều bản sao có thể có, nhưng chưa có câu hỏi nào giúp tôi cả.

.htaccess

ErrorDocument 404 /404.html

000-default.conf

<VirtualHost *:80>
AccessFileName .htaccess

ServerAdmin webmaster@localhost
DocumentRoot /var/www

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

<Directory /var/www/>
  Options Indexes FollowSymLinks Includes
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
</VirtualHost>

Những gì khác là cần thiết?


1
Lệnh AllowOverride All cho phép tất cả các tùy chọn trong tệp .htaccess. 000-default.conf giả định rằng chỉ có một trang web trên máy chủ của bạn. Là tập tin .htaccess không hoạt động cho bạn? Có nhiều hơn một trang web được lưu trữ trên máy chủ này không?
Closnoc

Có nhiều thư mục trong / var / www nhưng không có máy chủ ảo nào được tạo. / etc / apache2 / sites-Available / thư mục chứa hai tệp, 000-default.conf và default-ssl.conf. Tập tin htaccess được đặt trong / var / www /
David ZIP

Có lẽ 'DocumentRoot / var / www /'? (dấu gạch chéo)
Kovah

Kiểm tra để đảm bảo / etc / apache2 / sites-enable / chứa liên kết đến 000-default.conf. Nếu bạn thay đổi tệp /var/www/index.html, bạn có thể thấy các thay đổi khi bạn xem máy chủ bằng trình duyệt web, phải không?
Stephen Ostermiller

Câu trả lời:


26

Bước đầu tiên

Mở tệp như

sudo vim /etc/apache2/apache2.conf

Bước thứ hai

xóa dấu hiệu nhận xét (#) nếu bạn tìm thấy nó trước dòng này (số dòng khoảng 187).

AccessFileName .htaccess

Bước thứ ba

Sau đó tìm dòng nơi có

<Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
</Directory>

thay thế "Không" bằng "Tất cả"

AllowOverride All

Và voila ... .htaccesshoạt động !!


3
thay đổi không có hiệu lực cho đến khi tôi khởi động lại apache Lệnh: dịch vụ apache khởi động lại
Tahir Yasin

1
Tôi đề nghị, như @TahirYasin đề cập, khởi động lại apache. sudo service apache2 restart.
www139

7

Kích hoạt ModRewrite:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

1
Các servicelệnh bây giờ là cách ưa thích để khởi động lại Apache: sudo service apache2 restart.
Stephen Ostermiller

1

Trong trường hợp của tôi thay đổi AllowOverride Noneđể AllowOverride Alltrong /etc/apache2/sites-enabled/000-default.conf giúp.

Tất cả các tập tin .conf khác đã có AllowOverride All.


0
  1. Trong /etc/apache2/apache2.conf xóa dấu hiệu nhận xét ( #) khỏiAccessFileName .htaccess
  2. Tên của tệp cấu hình Apache của bạn không chuẩn. Bạn có thể đổi tên nó thành default.conf trong Windows và đổi tên thành mặc định trong Linux. Trong hệ điều hành dựa trên Linux, chạy mã này trong thiết bị đầu cuối:

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

Nó được đặt tên với các số không để nó xuất hiện đầu tiên theo thứ tự abc. Nếu bạn có tệp default.conf và sau đó tạo một trang web cho anteater.com, thì trình chống lại sẽ trở thành máy chủ mặc định vì nó được tải trước tiên. Giữ 000 để ngăn chặn những vấn đề như vậy. Tên của tệp conf không nên liên quan gì đến việc .htaccess có hoạt động hay không.
Stephen Ostermiller

1
'AccessFileName .htaccess' đã không bị lỗi. Câu trả lời trên đã giúp tôi. Cảm ơn.
David ZIP
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.