Làm cách nào để kích hoạt mod_rewrite trong Apache?


165

Tôi vừa cài đặt LAMP stack trên hệ thống Ubuntu của mình.

Việc chuyển hướng không hiệu quả với tôi. Tôi không biết làm thế nào để sửa nó. Ai giúp tôi với?


3
IMHO câu hỏi này không phải là Ubuntu cụ thể và nên được chuyển sang Lỗi máy chủ .
Paolo

2
Đèn OP được cài đặt trên UBUNTU. Bạn muốn thêm bao nhiêu Ubuntu cụ thể?
wojox

1
@wojov: Tôi không biết về trường hợp này, nhưng cuộc tranh luận đó không hiệu quả. "Làm cách nào tôi có thể sử dụng ứng dụng này (trên Ubuntu)?" chủ yếu là lạc đề.

23
Đây không phải là "Làm cách nào tôi có thể sử dụng ứng dụng" mà là "cách bật một tính năng cụ thể trong Ubuntu". Apache trong Ubuntu sử dụng một bố cục cấu hình khác nhau, trong đó mỗi mô-đun và máy chủ ảo là một tệp /etc/apache2và có thể được bật bằng a2*các chương trình.
Lekensteyn

Bạn nên mô tả những gì bạn đã làm để thu hẹp vấn đề, nó
ericn

Câu trả lời:


239

Để kích hoạt mô-đun ghi lại, hãy chạy "apache2 cho phép viết lại mô-đun":

sudo a2enmod rewrite

Bạn cần khởi động lại máy chủ web để áp dụng các thay đổi:

sudo service apache2 restart

Nếu bạn có kế hoạch sử dụng mod_rewrite trong .htaccesscác tệp, bạn cũng cần cho phép sử dụng các .htaccesstệp bằng cách thay đổi AllowOverride Nonethành AllowOverride FileInfo. Đối với trang web mặc định, chỉnh sửa /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Sau khi thay đổi như vậy, bạn cần khởi động lại Apache một lần nữa.


18
Tôi đã thành công hơn với AllowOverride All
Valentin Despa

Cảm ơn! sudo a2enmod rewriteFileInfosửa nó cho tôi!
d -_- b

22
Đối với tôi, tập tin đó là /etc/apache2/apache2.conf nơi tôi tìm thấy mục cấu hình đó
doc_id

Có làm cho hai thay đổi đã khắc phục vấn đề.
Adelin

Nó không làm việc cho tôi. Tôi đã đăng một câu hỏi ở đây Askubfox.com/questions/809619/failing-to-rewrite-url
Suhail Gupta

49

Tôi dám thêm một câu trả lời đặc biệt (như phần tiếp theo cho câu trả lời tuyệt vời ở trên) liên quan đến ubfox 14.04.htaccess:

Trong 14.04, tên của tệp cấu hình mặc định được đổi thành 000-default.conf:

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

thêm phần sau vào cuối tập tin:

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

Vì một số lý do, trong Ubuntu 14.04 và apache2, root được đặt thành /www/html. Nếu bạn muốn thay đổi gốc rễ webserver trở lại tốt cũ /www, open 000-default.confvà sự thay đổi

DocumentRoot /var/www/html/

đến

DocumentRoot /var/www/

và sau đó tất nhiên nó nên

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

1
Thanx để biết thông tin! Cách này / mới chúng ta có thể sử dụng www làm thư mục nơi chúng ta đặt tất cả các trang web và html theo mặc định là "trang web" cho localhost. Có thể quan trọng nếu bạn đang chơi với việc mở các cổng ra thế giới - theo cách này, localhost của bạn không thể thấy các thư mục của các dự án khác.
Vladimir Vukanac

1
Nó không làm việc cho tôi. Tôi đang sử dụng Ubuntu 14.04.4 LTS
Suhail Gupta
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.