Vấn đề của tôi là tệp .htaccess
trên máy chủ cục bộ của tôi không được đọc. Các cài đặt trong tệp VirtualHost
dường như luôn được ưu tiên.Cách nhận các tệp .htaccess hoạt động với Apache VirtualHost
Tôi đã thử những điều sau đây:
- Enabled
mod_rewrite
- Thay đổi
AllowOverride
đểAll
nhưng điều này gây ra mộtHTTP Error 500 Internal server error
. Tôi đã thử nó với các tùy chọn khác nhau nhưng nó luôn luôn gây ra một lỗi 500.
Tôi đang sử dụng một tập tin VirtualHost trên Ubuntu trông giống như sau:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /web/website
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /web/website>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Trong file .htaccess
tôi dưới /web/website
tôi có các quy tắc sau (mà không được đọc):
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA]
ErrorDocument 404 /404
ErrorDocument 401 /401
Một điều tôi đã thử đã làm việc là gắn các quy tắc này trực tiếp vào tệp VirtualHost, nhưng tôi muốn tệp .htaccess
của tôi hoạt động! Đó có phải là một yêu cầu lớn như vậy không? :(
Edit:..? Vì vậy, tôi nhìn vào apache tôi error.log
và nó nói Invalid command 'Action', perhaps misspelled or defined by a module not included in the server configuration
đề cập đến tập tin .htaccess
tôi Có vẻ như không phải là một module gọi là hành động mà tôi có thể kích hoạt Bất kỳ ý tưởng
chỉnh sửa 2: tôi nhận thấy rằng tập tin httpd.conf
của tôi là trống nên vấn đề này kể từ khi tôi đang sử dụng VirtualHost
file
Tôi đã thử nhận xét ra các quy tắc đó, nhưng có vẻ như chúng không gây ra sự cố. Bất cứ một đề nghị nào khác? Tôi nghĩ rằng bạn là đúng mặc dù, nó phải là một trong những quy tắc đó là sai. Tôi thậm chí đã cố gắng bình luận ra tất cả các quy tắc và một lần nữa nó không có hiệu lực! Vì vậy, tôi không biết những gì khác để thử! –
Hmm nhưng các quy tắc này hoạt động tốt trên máy chủ trực tiếp, bao gồm cả 404. Vì vậy, phải có cái gì khác trong thiết lập apache địa phương của tôi đó là sai. –
'' httpd.conf'' có nghĩa là thêm cấu hình người dùng và nó được bao gồm trong tệp 'apache2.conf''. Nó được để trống theo mặc định. – cyberhicham