2012-08-25 23 views
25

私は自分のコンピュータでランプサーバーを使用しています。私はLaravelのPHPフレームワークを使い始めました。 私の.htaccessに、私がOptions + FollowSymLinksを使用すると、私は500エラーを受け取ります。 そして私がコメントアウトした場合、私は私のすべてのアドレスが..exampleでのindex.phpを使用する必要があります。オプション+ FollowSymLinksとは何ですか?

/~ytsejam/blog/public/index.php/login

私はアーチのLinuxを使用しています。それを解決する方法はありますか?

編集:私はこれを仮想ホストを使用して解決しました。 laravelフォルダのapplication/config/application.phpからindex.phpを削除します。

+1

サーバーログには500sについては何か言われていますか? –

+0

サーバーエラー! サーバーで内部エラーが発生し、要求を完了できませんでした。サーバーが過負荷になっているか、CGIスクリプトにエラーがあります。 – ytsejam

+0

[Sat Aug 25 25 10:23:33 2012] [アラート] [クライアント:: 1] /home/ytsejam/public_html/blog/public/.htaccess:ここでは許可されていないオプション – ytsejam

答えて

10

インターネットで「.htaccessオプションは許可されていません」と検索する可能性があります。

私は(グーグルを使って)見つけ提案がある:

チェックは、httpd.confファイルがAllowOverrideのすべてを持っていることを確認します。

(Laravel /パブリックフォルダに配置)ミントLinux上で私の作品.htaccessファイル:これはあなたを助け

# Apache configuration file 
# http://httpd.apache.org/docs/2.2/mod/quickreference.html 

# Turning on the rewrite engine is necessary for the following rules and 
# features. "+FollowSymLinks" must be enabled for this to work symbolically. 

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

# For all files not found in the file system, reroute the request to the 
# "index.php" front controller, keeping the query string intact 

<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

希望。そうでなければ、Laravelフォーラム(http://forums.laravel.com/)で質問することができます。そこには本当に有益な人がいます。

3

ウェブサイトにアクセスしてWebブラウザの/ system/files/imagesフォルダを参照すると、/ picturesフォルダからimage.pngを取得する必要があることをサーバがどのように知っていますか?いわゆるシンボリックリンクは、この動作を担当する人物です。あなたのシステムのどこかにシンボリックリンクがあり、あなたのサーバに "訪問者が/system/files/images/image.pngを要求すれば/pictures/image.pngを表示します。"

これでFollowSymLinks設定の役割は何ですか?

FollowSymLinksは、サーバーのセキュリティに関連しています。 Webサーバーを扱う際には、未定義のままにすることはできません。誰が何にアクセスできるかを教えなければなりません。 FollowSymLinks設定は、シンボリックリンクを行う必要があるかどうかをサーバーに指示します。つまり、FollowSymLinksが無効になっている場合は、403(アクセス禁止)または404(見つからない)エラーのいずれかの設定に応じて/system/files/images/image.pngファイルへの参照が返されます。

http://www.maxi-pedia.com/FollowSymLinks

3

パラメータOptions FollowSymLinksあなたは、いくつかの他のファイル/ディレクトリを指すWebルートにsymlinkを持つことができます。これを無効にすると、Apacheはそのようなシンボリックリンクを拒否します。より安全なOptions SymLinksIfOwnerMatchを代わりに使用することができます。これにより、所有する他のファイルにのみリンクすることができます。

Optionsディレクティブを.htaccessに設定し、メインのApache設定で禁止されているパラメータを使用すると、サーバーはHTTP 500エラーコードを返します。

許可される.htaccessオプションは、メインのApache設定ファイルのAllowOverrideディレクティブで定義されています。シンボリックリンクを許可するには、この指示文をAllまたはOptionsに設定する必要があります。

シンボリックリンクの使用を許可する以外に、mod_rewrite.htaccessコンテキストで有効にするには、この指令も必要です。しかし、このために、より安全なSymLinksIfOwnerMatchオプションも使用できます。

+1

*なぜ*これが必要なの? .htaccessファイルの 'mod_rewrite'?私はドキュメントでその資格を見ましたが、 "セキュリティ上の理由"以外の説明はありません... – jwd

+0

はい、 '.htaccess'ファイルを使ってユーザーがmod_rewriteを使用することをセキュリティで保護します。別のパラメータがあればいいでしょうが、おそらくApacheモジュールはAllowOverrideに新しいパラメータを導入できないので、既存のものを選択しています... – Marki555

+1

私の質問は、別の言い方をすれば、この追加の「AllowOverride」要件が防止する悪意のある人はいますか?私はそれが実際にあなたを買うものは見ません... – jwd

関連する問題