私はこの問題について可能な限りほとんどすべてを読みましたが、私の問題を解決するものを見つけることができませんでした。これは私が取得しているエラーログです:オプションFollowSymLinksまたはSymLinksIfOwnerMatchはオフです。これはRewriteRuleディレクティブが禁止されていることを意味します:/var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl
サイトにアクセスすると、「このドキュメントにアクセスする権限がありません」という403 Forbiddenが表示されます。エラー。
私はこれを持っているように私の.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>
本当に次に何ができますか?
Webアプリケーションが存在するディレクトリが、FollowSymLinks
を制限している別の親ディレクトリに含まれていないことに注意してください。
解決策は、最上位ディレクトリ(親ディレクトリ)でFollowSymLinks
を有効にするか、親ディレクトリの「no FollowSymLinks
」のスコープ外のディレクトリにWebアプリケーションを移動することです。
たとえば、次の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
オプションのApacheドキュメント からこれに注意してください:
+または-のオプションとオプションの混在は有効な構文ではないため、サーバーの起動中に中止を伴う構文チェックによって拒否されます。
ブロックで+/-ありとなしのオプションを混合しています(つまり、FollowSymLinksを参照)。
オプションの前に「+」を追加するのを忘れていたサイトの1つで、今日同じエラーが表示されました。 「+」を追加しましたが、機能します。
この問題があり、Apacheモジュールとしてではなくfast-cgiを使用してphpを構成したため、\conf\extra\httpd-fcgid.conf
そして、このブロックにFollowSymLinks
を追加しました
<Files ~ "\.php$">
Options ExecCGI FollowSymLinks
AddHandler fcgid-script .php
FcgidWrapper "d:/php/php-cgi.exe" .php
</Files>
これが誰かを助け、私が無駄にした時間を節約することを願っています。
最近、同様のエラーが発生したため、修正しました。この問題の考えられる根本的な原因の1つは、エラーテキスト自体に記載されているターゲットフォルダ(書き換え先)に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を入力したときに.htaccessを更新してもブラウザですぐに効果が得られず、.htaccessへの変更を考慮せずにすぐに同じ結果が表示される場合があります。この場合、変更の効果を確認するためにブラウザーを再起動する必要があります。初心者にとっては、修正しようとすると非常に時間がかかり、動作しない理由がわかりにくくなります。また、httpd.confを変更した場合(私の投稿ではそうではありません)、Webサーバーを再起動する必要があります。
エラーの修正を調査しているときに、Pleskのインストールでこのエラーが発生していることをWebで確認しました。この場合、その特定の問題の解決策は/ etc/Apache2/mods-enabled/dirを編集することでした。 conf、DirectoryIndexを更新し、index.phpをindex.plの前に移動します。
これをルートディレクトリに配置します。
<Directory />
#AllowOverride none
Require all denied
Options FollowSymLinks
Options SymLinksIfOwnerMatch
</Directory>
<Directory "root">
Options FollowSymLinks
Options SymLinksIfOwnerMatch
</Directory>