gpt4 book ai didi

.htaccess - 带有 .htaccess 的 HTTPS 和 REST API

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:13 25 4
gpt4 key购买 nike

首先,我使用以下 .htaccess 文件在 apache2 服务器上为我的 REST API 实现了重写规则:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ index.php?rquest=$1 [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ index.php [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ index.php [QSA,NC,L]
</IfModule>

它运行良好。如果我输入例如http://mypage.de/REST/SomeRule/12 我在REST/文件夹下的index.php收到了SomeRule信息/12

现在我在我的服务器上启用了 SSL 并且我想强制 API 使用 https 所以我将以下代码添加到我的 .htaccess 文件:

RewriteCond %{SERVER_PORT}   !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L]

现在我收到页面未找到错误。您能在 .htaccess 文件中看到错误,还是必须在其他地方?我对这些文件不是很熟悉。为了创建我的 API,我使用了 this tutorial .

最佳答案

anubhava的帮助下我找到了解决方案。

当我更新服务器以使用 https 运行时,我的文件夹 sites-enabled 包含一个新文件 sites-enabled/default-ssl。在这个文件中我必须设置

AllowOverride All

就像我在使用 http 时所做的一样。我为 .htaccess 文件添加的正确解决方案如下:

<IfModule mod_rewrite.c>
RewriteEngine On

#use https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/%{REQUEST_URI} [L]

#used for api
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ index.php?rquest=$1 [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ index.php [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ index.php [QSA,NC,L]
</IfModule>

我无法使用

RewriteRule  (.*)  https://%{HTTP_HOST}/$1  [L]

因为 $1 然后以某种方式被下一个规则覆盖。

关于.htaccess - 带有 .htaccess 的 HTTPS 和 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26439387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com