Apache-2.2
即使在重定向到 .htaccess 中的特定文件後也得到“302 Found”
我有一個託管在 EC2 實例上的 Apache 伺服器,它指向我擁有的域。現在,我基本上想要完成的是,
.json
當使用者嘗試 curl 域時,Web 伺服器應該返回一個文件。例如。
$curl mydomain.com
我的
000-default.conf
文件位於/etc/apache2/sites-available/
如下所示。我添加了<Directory>
啟動.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
標誌來跟踪重定向,否則您只會看到重定向響應,這就是您所看到的。(因為那是你的.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
替換採用 URL 路徑(相對於文件根目錄) - 您提供了一個絕對文件系統路徑,這將不起作用。^(.*)$
- 您的RewriteRule
模式也匹配所有內容,因此這將導致重定向循環。如果您只想重定向文件根目錄,那麼您應該使用^$
。請嘗試以下操作:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} curl RewriteRule ^$ /resume.json [R=302,L]
但是,您真的要從外部重定向請求嗎?這應該是內部重寫:
RewriteRule ^$ /resume.json [T=application/json,L]
*旁白:*看起來您的
<Directory>
部分“浮動”在<VirtualHost>
容器之外 - 這不應該在虛擬主機內嗎?