.htaccess 重定向至“受保护的https在react-router中无法正常工作”诊断树

km0tfn4u  于 2022-11-16  发布在  React
关注(0)|答案(1)|浏览(133)

create-react-appreact-router一起使用,我如何进行以下任何变化(我不认为我错过了任何变化):

重定向至:
https://www.example.com(注意https,安全)
我尝试添加一个www子域,然后使用以下代码创建了一个.htaccess文件:

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

当我添加这个时,react routes不起作用,我得到一个空白页面。(我使用1and1来托管。)我做错了什么,我该如何修复它?

5w9g7ksd

5w9g7ksd1#

我遇到了这个问题,我也使用1&1,
这是因为为了使react-router正常工作,您需要将所有内容重定向到index.html
在这里,您只进行http到https的重定向,这是工作的第一部分。
但是,您还需要将https请求重定向到您的index.html文件。
因此,您将http重定向到https:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NC,L,R=301]

然后,如果https“打开”,则将所有内容重定向到index.html

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ /index.html [NC,L,QSA]

您可以在此处测试您的.htaccesshttps://htaccess.madewithlove.be/
理论上它工作正常,但我不知道为什么在我的情况下,当URI是“/"时,重定向不工作。
所以我补充道:
如果https未激活且URI为“/,”则重定向到我得网站得根目录(使用https)

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^.$
RewriteRule .* https://"your-site.com"/ [NC,L,R=301]

总结答案

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} ^.$
    RewriteRule ^(.*)$ https://"your-site.com"/ [NC,L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NC,L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{HTTPS} on
    RewriteRule ^(.*)$ /index.html [NC,L,QSA]

</IfModule>

相关问题