Файл.htaccess не запущен и внутренняя ошибка сервера
Я использую Ubuntu 14.04 и у меня есть среда LAMP. У меня есть один проект в dir / var / www / html / project1. Он не может получить доступ к файлу .htaccess для перезаписи правил URL.
Для этого мне нужно изменить в файле /etc/apache2/apache2.conf
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All # change None to All
Order allow,deny
allow from all
Require all granted
</Directory>
Но после этого изменения мой сервер Apache выдает ошибку "Внутренняя ошибка сервера", а apache выдает ошибку для любого веб-сайта (проекта).
И если я изменю "AllowOverride None", то сайт работает правильно, но файл.htaccess не работает.
"Внутренняя ошибка сервера" происходит из-за файла.htaccess в другом проекте, который похож на этот
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
Я ничего не могу понять в файле htaccess. Пожалуйста, помогите мне переписать файл htaccess и его значение.
Спасибо
1 ответ
Вместо изменения директивы в блоке по умолчанию вы должны использовать отдельный блок специально для вашего каталога проекта:
<Directory /var/www/html/project1>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
Это позволит использовать только файлы.htaccess в этом конкретном каталоге.
Ошибка 500, которую вы получаете, вероятно, вызвана неправильным синтаксисом в файле.htaccess. Было бы полезно, если бы вы показали нам, что у вас есть во всех файлах.htaccess.
В качестве альтернативы вы можете посмотреть в журналах ошибок Apache /var/log/apache2/error.log для получения более конкретной информации об ошибке.