所有しているドメインを指すEC2インスタンスでホストされているApacheサーバーがあります。さて、私が本質的にやりたいことは、ユーザーがドメインをカールしようとしたときに、Webサーバーが.json
ファイルを返す必要があるということです。
例えば。 $curl mydomain.com
000-default.conf
にある私の/etc/Apache2/sites-available/
ファイルは次のようになります。 <Directory>
セクションを追加して、Webサイトのルートでもある.htaccess
フォルダーにある/var/www/html
ファイルをアクティブにしました。
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
私の.htaccess
ファイルは次のようになります。
RewriteEngine On
RewriteCo "%{HTTP_USER_AGENT}" curl
RewriteRule ^(.*)$ "/var/www/html/resume.json" [L,R=302]
私の/var/www/html
ディレクトリは次のようになります。
/.well-known
.htaccess
index.html
resume.json
私は数多くの例とチュートリアルを経験し、特定のことを行う必要がある限り、どこからでも少しずつ使用して到達しました。残念ながら、ドメインをカールしようとすると、次のメッセージが返されます。
C:\Users\example >curl example.com/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://example.com">here</a>.</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at example.com Port 80</address>
</body></html>
ターミナルに.json
をそのまま表示できない構成で、何が悪いのか知りたいのですが。
CURLを使用している場合は、_-L
_フラグを使用してfollowリダイレクトする必要があります。そうしないと、リダイレクト応答が表示されます。これが表示されます。 (それがあなたの_.htaccess
_ディレクティブが行っていることだからです。)
ただし、_.htaccess
_ファイルにエラーがあります...
_.htaccess
_ファイル(「スクリーングラブ」から):
_RewriteEngine On
RewriteCo "%{HTTP_USER_AGENT}" curl
RewriteRule ^(.*)$ "/var/www/html/resume.json" [L,R=302]
_
そのRewriteCo
行は明らかな構文エラーです-それで、実際のファイルに含めることはできないと思いますか?
_"/var/www/html/resume.json"
_ --_.htaccess
_では、RewriteRule
substitutionはURLパスを取ります(ドキュメントルートに対して)-絶対ファイルシステムパスを指定しました。動作しません。
^(.*)$
--RewriteRule
patternもeverythingと一致するため、リダイレクトループが発生します。ドキュメントルートのみをリダイレクトする場合は、代わりに_^$
_を使用する必要があります。
代わりに次を試してください。
_RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} curl
RewriteRule ^$ /resume.json [R=302,L]
_
ただし、本当に外部リダイレクトリクエストを実行しますか?これはおそらく内部書き換え:であるはずです。
_RewriteRule ^$ /resume.json [T=application/json,L]
_
Aside: _<Directory>
_セクションが_<VirtualHost>
_コンテナの外側に「浮いている」ように見えます-これは仮想ホストの内側にあるべきではありませんか?