Flask-CGI-需要修复htaccess的问题



所以我已经成功地使用CGI部署了一个Flask应用程序。为了让应用程序正常工作,我的.htaccess文件必须如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /home/user/public_html/mysite/cgi-bin/main.cgi/$1 [L]

然而,我面临着几个问题。

  1. mysite.com可以工作,但当我将其他页面链接到主页时,它会将它们带到mysite.com/cgi-bin/main.cgi。我希望这些链接能将用户带到mysite.com。同样,当我尝试链接到另一个页面时,它也会转到mysite.com/cgi-bin/main/page2,而我实际上希望它是mysite.com/page2。我该怎么解决这个问题?

  2. 以下.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目录/文件夹之外。在测试URL之前,还要清除浏览器缓存。

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,R=301,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="/">,这样你的相关链接就可以从正确的位置加载。

最新更新