2013-10-16 24 views
13

Tệp htaccess của tôi hoạt động trên localhost nhưng không hoạt động khi tôi triển khai nó lên phiên bản EC2.htaccess hoạt động trong localhost nhưng không hoạt động trong trường hợp EC2

Tôi đang sử dụng Macbook và trong công cụ tìm tôi không thể xem tệp htaccess, tôi nghĩ rằng có lẽ nó không được sao chép sang EC2 nhưng tôi không nghĩ đây là vấn đề bởi vì khi tôi sao chép dự án tôi có thể xem tập tin htaccess trong trình soạn thảo của tôi.

Có điều gì đó cho phép viết lại mod trong phiên bản Linux EC2 không? Nếu có, tôi đã không làm điều đó hoặc nó cho phép mod viết lại như mặc định?

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

FYI - bạn có thể hiển thị các file ẩn trong OS X bằng cách chạy lệnh Terminal này và khởi động lại Finder. 'mặc định viết com.apple.finder AppleShowAllFiles YES.' – zekel

Trả lời

6

Theo mặc định EC2 không bật .htaccess, bạn phải chỉnh sửa httpd.config để cho phép.

Trong/etc/apache/sites-available/thay đổi mặc định AllowOverRide = None thành AllowOverRide = All.

+0

Có chúng bị ẩn nhưng khi tôi sao chép các tập tin ẩn thư mục bị bỏ qua? Vì vậy, tôi đang cố gắng hiểu rằng vấn đề là tôi không thể sao chép tập tin .htaccess của tôi vào máy chủ. –

+0

Bạn đã thử sao chép nội dung của .htaccess sang .htaccess trên máy chủ từ xa chưa? –

+0

Tôi đang sử dụng phiên bản Amazon EC2 Linux và tôi không biết cách thực hiện. Có một tệp .htaccess khác trong máy chủ bên cạnh tôi đã sao chép không? –

2

của một quá trình ba bước

  1. Cấu hình apache mod_rewrite, chạy trong nhà ga. sudo a2enmod viết lại

  2. thêm đoạn mã sau vào/etc/apache2/sites-available/default

DocumentRoot /var/www 
<Directory /> 
Options FollowSymLinks 
AllowOverride All 
</Directory> 
<Directory /var/www/> 
Options Indexes FollowSymLinks MultiViews 
AllowOverride All 
Order allow,deny 
allow from all 
</Directory> 

3.Restart apache

/etc/init.d/apache2 restart 
38

tôi kết hợp với nhau một số thông tin từ các bài viết khác nhau vì vậy tôi nghĩ rằng tôi muốn đưa ra một câu trả lời.

  1. Khi Paul nhận xét, Nếu bạn đang chạy Amazon EC2 Linux, có thể bạn đang chạy httpd thay vì Apache. Do đó, tệp trong số /etc/httpd/conf/httpd.conf
  2. Bạn phải thay đổi tệp với tư cách người dùng root. (từ truy cập ssh) Thực hiện điều này: sudo vim /etc/httpd/conf/httpd.conf (How to edit httpd.conf file in AMAZON EC2)
  3. DocumentRoot "/var/www/html" được liệt kê ở hai nơi cho tôi. Tôi phải thay đổi AllowOverride None sau đó thành AllowOverride All ở hai địa điểm đó.
  4. Khởi động lại apache. Tôi khởi động lại toàn bộ trường hợp ec2 của tôi (tôi có apache cấu hình để bắt đầu tự động) mặc dù chỉ cần khởi động lại apache nên làm việc. Nhưng tôi thấy sự thay đổi đang hoạt động.

Tôi đã cố gắng thực hiện các thay đổi tương tự trong tệp .htaccess (xóa index.php khỏi url trong ứng dụng trình kích hoạt mã). Hy vọng nó giúp!

+0

Cảm ơn bạn rất nhiều vì điều này. Đối với những người khác: ** Khởi động lại phiên bản EC2 từ AWS là phải **. –

+2

Bạn không cần phải khởi động lại toàn bộ cá thể, chỉ cần khởi động lại httpd. Bạn có thể làm như vậy thông qua dòng lệnh với/sbin/service httpd restart – foamcow

+0

Cảm ơn rất nhiều vì điều này. – testuserx

0

Có ba bước

  1. Cấu hình apache mod_rewrite, chạy trong nhà ga. sudo a2enmod viết lại

  2. Thêm mã này vào tệp này sau khi đóng thẻ VirtualHost/etc/apache2/sites-available/000-default.conf

    DocumentRoot/var/www
    Tùy chọn FollowSymLinks
    AllowOverride All
    Tùy chọn Indexes FollowSymLinks MultiViews
    AllowOverride All
    Đặt hàng cho phép, từ chối
    phép từ tất cả các

  3. Restart máy chủ apache theo lệnh

    dịch vụ sudo apache2 restart

Các vấn đề liên quan