【问题标题】:Htacess Exeption for api.phpapi.php 的 Htaccess 异常
【发布时间】:2019-12-01 19:54:11
【问题描述】:

我的 NodeMCU 正在将数据保存到我的 Web 服务器(温度、湿度等),但是在我重写服务器前端和后端以使用 Symphony 框架后,即使我无法通过 HTTP 访问我的 API 文件在我的 .htaccess 中写入异常

我的.htaccess

RewriteEngine On
RewriteBase /vasek/home/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !.css
RewriteCond %{REQUEST_FILENAME} !.js
RewriteCond %{REQUEST_FILENAME} !api.php
RewriteRule (.*) index.php?url=$1 [QSA,L]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我希望访问我的服务器根文件夹中的 api.php 文件而不是得到这个

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://dev.steelants.cz/vasek/home/api.php">here</a>.</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at dev.steelants.cz Port 80</address>
</body></html>

【问题讨论】:

  • 最后一条规则导致了这个重定向。

标签: php .htaccess


【解决方案1】:

上面的重定向是由第二条规则引起的 HTTP 到 HTTPS 重定向引起的。如果您不想拥有它,请参阅以下内容:

RewriteEngine On
RewriteBase /vasek/home/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !.css
RewriteCond %{REQUEST_FILENAME} !.js
RewriteRule (.*) index.php?url=$1 [QSA,L]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_FILENAME} !api.php
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !api.php 对于第一个 RewriteRule 不是必需的,因为它已经包含在 !-f 中(参见https://httpd.apache.org/docs/current/mod/mod_rewrite.html;我想!.css!.js 的其他两个规则也不是必需的)。但是,您希望 HTTPS 重定向的这个例外。

顺便说一句。您应该避免永久重定向(参见How to undo a 301 redirect?)。

【讨论】:

  • 非常感谢,请问有以下问题吗? /n 如果我没记错的话,如果 RewriteCond 彼此相邻,那么如果我在正确的情况下使用 && 是一样的吗?如果所有 Cond 都为真,则任何 RewriteRule 都将被应用,直到 RewriteRule 之后会有下一个 RewriteCond ?
猜你喜欢
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
相关资源
最近更新 更多