Я использую 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 ответ1

2

Вместо изменения директивы в блоке по умолчанию вы должны использовать отдельный блок специально для вашего каталога проекта:

<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 для получения более конкретной информации об ошибке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .