我有一个像 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>
最好的方法是在 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
的文件夹中。