Подтвердить что ты не робот

Параметры FollowSymLinks или SymLinksIfOwnerMatch отключены

Я прочитал почти все возможное для этой проблемы и не смог найти ничего, что могло бы решить мою проблему. Это журнал erorr, который я получаю: Параметры FollowSymLinks или SymLinksIfOwnerMatch отключены, что означает, что директива RewriteRule запрещена:/var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl

При доступе к сайту я получаю 403 Запрещено "У вас нет разрешения на доступ к этому документу". ошибка.

Я изменил свой .htaccess, чтобы иметь это:

Options +FollowSymLinks +SymLinksIfOwnerMatch
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]
.
.
.

Я также добавил это в httpd.conf:

AddHandler cgi-script .cgi
AddHandler cgi-script .pl

<Directory />
Options -ExecCGI FollowSymLinks -Includes -IncludesNOEXEC -Indexes -MultiViews -SymLinksIfOwnerMatch
AllowOverride All
</Directory>

Действительно, что я могу сделать дальше?

4b9b3361

Ответ 1

Следите, чтобы каталог, в котором проживает ваше веб-приложение, не входит в другой родительский каталог с ограниченным FollowSymLinks.

Решение состоит в том, чтобы включить FollowSymLinks в верхнем каталоге (родительский каталог) или переместить веб-приложение в каталог за пределами области "no FollowSymLinks" в родительском каталоге.

Например, следующая конфигурация apache может быть проблемой и, конечно же, она воспроизводит проблему:

    <VirtualHost *:80>
      ...  
      <Directory "D:/">
        Options Indexes
      </Directory>

      <Directory "D:/mywebfolder/">
        Options Indexes FollowSymLinks
      </Directory>
      ...
   </VirtualHost>

Чтобы избежать этой проблемы:

    <VirtualHost *:80>
      ...  
      <Directory "D:/">
        Options Indexes FollowSymLinks
      </Directory>
      ...
      ...
   </VirtualHost>

Или переместите ваш D:/mywebfolder/ в другой блок, например. E:/mywebfolder

Ответ 2

Обратите внимание на это из apache docs для опции:

Параметры смешивания с + или - с теми, у кого нет, недействительный синтаксис, и будет отклонен при запуске сервера с помощью проверки синтаксиса с помощью прервать операцию.

Вы смешиваете опции с +/- и без вашего блока (т.е. см. FollowSymLinks).

У меня была такая же точная ошибка, которая появилась сегодня на одном из моих сайтов, где я забыл добавить "+" перед опцией. Я добавил "+", и теперь он работает.

Ответ 3

У меня была эта проблема и, наконец, я обнаружил, что, поскольку у меня был php, настроенный с помощью fast-cgi, а не как модуль apache, мне пришлось обновить \conf\extra\httpd-fcgid.conf, а затем добавить FollowSymLinks в этот блок

<Files ~ "\.php$">
Options ExecCGI FollowSymLinks
AddHandler fcgid-script .php
FcgidWrapper "d:/php/php-cgi.exe" .php
</Files>

Надеюсь, что это поможет кому-то и сохранит часы, которые я потратил впустую.

Ответ 4

Недавно у меня была аналогичная ошибка, и я исправил ее для меня. Одна из возможных причин этой проблемы заключается в том, что целевая папка (к которой выполняется переписывание), упомянутая в самом тексте ошибки, не имеет опции FollowSymLinks. Из вашего сообщения об ошибке я вижу, что эта папка:/var/www/vhosts/site.com/httpdocs/cgi-bin/

В этом случае вы можете использовать в .htaccess этой конкретной папки:

Options +FollowSymLinks

Этот параметр выше просто добавит FollowSymLinks для этой папки поверх существующих опций (что означает "+", добавляет только эту опцию).

Пример:

<IfModule mod_rewrite.c>
  RewriteEngine On
  Options +FollowSymLinks
</IfModule>

Это был случай, когда у меня была ошибка, и именно так я ее исправил. В моем случае была другая папка (не cgi-bin) и другой файл (файл PHP).

Внимание:

  • Убедитесь, что вы действительно хотите переписать URL-адрес, чтобы указать на cgi-bin. Если у вас есть важные сценарии, это может повлиять на безопасность, и вы можете не захотеть этого переписывания. Если вы сделаете этот параметр в cgi-bin, люди смогут просматривать вывод ваших скриптов в cgi-bin, что может быть не очень хорошо, если вы не знаете, что делаете.

Примечания:

  • Обратите внимание, что в зависимости от локальных настроек/настроек браузера обновление .htaccess может не обеспечить эффект в браузере мгновенно, когда вы вводите URL-адрес, и можете сразу отобразить тот же результат, не учитывая ваши изменения в .htaccess. В этом случае вам, возможно, придется перезапустить браузер, чтобы увидеть эффект от ваших изменений. Для новичков это может быть очень много времени, когда вы пытаетесь исправить, и запутываете, почему это не сработает. Кроме того, если вы изменяете httpd.conf(не в моем сообщении), вам необходимо перезапустить веб-сервер.

  • При проверке исправления моей ошибки я заметил в Интернете, что эта ошибка также была для некоторых людей, для установки Plesk, и в этом случае решением этой конкретной проблемы было изменение /etc/apache 2/mods-enabled/dir.conf и обновить DirectoryIndex и перенести index.php перед index.pl.

Ответ 5

Поместите это в свой корневой каталог:

<Directory />
    #AllowOverride none
    Require all denied
    Options FollowSymLinks
    Options SymLinksIfOwnerMatch 
</Directory>

<Directory "root">
    Options FollowSymLinks
    Options SymLinksIfOwnerMatch 
</Directory>