反应 htaccess - 从子文件夹到服务器

问题描述 投票:0回答:1

我有一个像 abcd.com 这样的域名。默认托管文件夹是public_html。我有 prod_react 文件夹和 dev_react 文件夹。

对于 abcd.com,我想从 prod_react 文件夹提供服务,对于 dev.abcd.com,我想从 dev_react 文件夹提供服务。

我在某种程度上能够实现,但是在刷新或重新加载时,我收到 404 错误。以下是我目前的确认。任何帮助都会很棒。先谢谢你了

/public_html/prod_react/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase prod_react/
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.html [L]
</IfModule>
---
public_html/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ ./prod_react/ [L]
</IfModule>
reactjs apache .htaccess
1个回答
0
投票

最好的方法是在 http 服务器内设置两个单独的虚拟主机,并将它们的

DocumentRoot
指令设置为指向各自的文件夹:

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot "/var/lib/www/prod_react"

    # Other directives here
</VirtualHost>

<VirtualHost *:443>
    ServerName dev.example.com
    DocumentRoot "/var/lib/www/dev_react"

    # Other directives here
</VirtualHost>

如果这对您来说不可能,那么如果您有权访问实际的http服务器配置(阅读:如果那不是您的服务器,但您正在使用托管提供商),那么您需要使用根据请求重写规则

HTTP_HOST
:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^ /prod_react%{REQUEST_URI} [END]
RewriteCond %{HTTP_HOST} ^dev.example.com$
RewriteRule ^ /dev_react%{REQUEST_URI} [END]

由于您无权访问http服务器的主机配置(最好应该实现此类规则),因此您需要使用分布式配置文件(通常称为“.htaccess”)如果在http服务器内启用了它们的考虑 。将上述规则放在虚拟主机

DocumentRoot
指令指向的主内容文件夹中的此类文件中,因此位于包含两个文件夹
prod_react
dev_react
的文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.