web-dev-qa-db-ja.com

nginxで.htaccessファイルを使用するにはどうすればよいですか

現在、WebサイトをApacheからnginxに移行していますが、.htaccessファイルが機能しません。私のウェブサイトは/usr/share/nginx/html/mywebsiteフォルダー内にあります。 nginxサーバーで.htaccessを使用するにはどうすればよいですか?

これは私の.htaccessファイルです:

RewriteEngine on
RewriteRule video/watch/([a-zA-Z0-9_@$*-]+)/?$ "videos-single.php?id=$1" [NC]
13

Nginxは.htaccessをサポートしていません( hereを参照してください)これはできません。できません。htaccessが必要な場合は、あなたはおそらくそれを間違っています。」)。

あなたには2つの選択肢があります(私が知っているように):

17
uzsolt

これは、nginxでは正式にサポートされていません。この種の機能が必要な場合は、Apacheまたはそれをサポートする他のHTTPサーバーを使用する必要があります。

とは言っても、 公式のnginxの推論 には欠陥があります。これは、ユーザーがしたい方法でユーザーがやりたいことを制限するためです。たとえば、nginxはディレクトリを10秒/分程度ごとに簡単にチェックしたり、inotifyなどのメカニズムを使用したりできます。これにより、すべてのリクエストでチェックする必要がなくなります...しかし、それを知っていることは役に立ちません。 :)

この制限を回避するには、nginxの設定ファイルが表示されるのを待って/etc/nginx/conf.d/にコピーするスクリプトを作成します。ただし、セキュリティに何らかの影響がある場合があります-nginxには.htaccessのネイティブサポートがないため、構成ファイルで許可される構成ディレクティブを制限するサポートもありません。 YMMV。

1
johndodo

免責事項:私はnginxのhtaccessの著者ですは有料ソフトウェアです。悪い意図はありません。

過去数年間、htaccessの動作をnginxに実装するプラグイン、特にRewriteRuleAllowDenyなどを作成しました。 Webセキュリティに不可欠です。プラグインは問題なく自分の生産的な環境で使用されます。

私はnginxの効率と速度のポイント、そしてなぜhtaccessを実装しなかったのかを完全に共有しています。ただし、考えてみてください。 nginxとhtaccessを使用している場合、さらに悪化させることはできません。 nginxの優れたパフォーマンスを維持しつつ、1台のWebサーバーで簡単にレガシーアプライアンスを駆動できます。

0
Gerald