如何解决Flask - CGI - 需要解决 htaccess 的问题
所以我已经成功地使用 CGI 部署了一个 Flask 应用程序。为了让应用程序正常工作,我的 .htaccess 文件必须如下所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /home/user/public_html/mysite/cgi-bin/main.cgi/$1 [L]
但是,我面临一些问题。
-
mysite.com 可以工作,但是当我将其他页面链接到主页时,它会将它们带到 mysite.com/cgi-bin/main.cgi。我想要将用户带到 mysite.com 的链接。同样,当我尝试链接到另一个页面时,它会转到 mysite.com/cgi-bin/main.cgi/page2,而我实际上希望它是 mysite.com/page2。我该如何解决这个问题?
-
以下 .htaccess 内容似乎不起作用:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
我不确定上述两个问题是否相关,但我想同时解决这两个问题。
解决方法
对于您展示的样本,请尝试遵循规则。请确保您的 htaccess 规则文件在您的 cgi-bin 目录/文件夹之外。在测试您的网址之前,还要清除浏览器缓存。
RewriteEngine ON
##Rules for applying https to urls.
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
##Rules to remove www from urls.
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule ^ https://%1/%{REQUEST_URI} [NE,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cgi-bin/main.cgi/page2/?$ cgi-bin/templates/page2/index.html [NC,L]
JS/CS 重写/重定向:
您可能需要使用 base 标签来修复您的 js 和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html,那么您的相关资源将从 /file/ 加载,这不是目录,而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用基本标签。在您网页的标题中添加此 <base href="/">
,以便您的相关链接可以从正确的位置加载。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。