Apache 如何将trafic定向到两个不同的子文件夹?
我有一个很简单的问题,似乎无法解决。我有两个子文件夹:一个用于Laravel,另一个用于React 如果用户试图访问Apache 如何将trafic定向到两个不同的子文件夹?,apache,.htaccess,Apache,.htaccess,我有一个很简单的问题,似乎无法解决。我有两个子文件夹:一个用于Laravel,另一个用于React 如果用户试图访问example.com/api或example.com/admin,我希望他的请求转到Laravel子文件夹,而不在URL中显示example.com/Laravel/api 如果用户尝试任何其他请求,例如example.com/profile,我希望他的请求转到React子文件夹,而不在URL中显示example.com/React/profile 我知道这是非常基本的,但我需要
example.com/api
或example.com/admin
,我希望他的请求转到Laravel子文件夹,而不在URL中显示example.com/Laravel/api
如果用户尝试任何其他请求,例如example.com/profile
,我希望他的请求转到React子文件夹,而不在URL中显示example.com/React/profile
我知道这是非常基本的,但我需要帮助来理解这一点…在根
文件中。htaccess
尝试以下操作:
RewriteEngine On
# Internally rewrite /api and /admin to /laravel subdirectory
RewriteRule ^(api|admin)$ laravel/$1 [L]
# Everything else is rewritten to the /react subdirectory
# Except for requests (including rewritten requests) to "/laravel" itself.
RewriteRule !^laravel/ react%{REQUEST_URI} [L]
这确实假设在/laravel
和/react
子目录中还有其他.htaccess
文件也包含mod_rewrite指令
更新:如果/react
子目录中没有.htaccess
文件,其中也包含mod_rewrite指令,则需要向第二条规则添加一个条件以防止重写循环(500错误)。例如:
# Everything else is rewritten to the /react subdirectory
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule (.*) react/$1 [L]
通过检查
REDIRECT\u STATUS
环境变量,我们可以确保只有直接请求(即尚未重写的请求)被重写到/react
子目录。当我这样做时出现错误500,我将尝试更改某些内容。谢谢在/react
子目录中是否有包含mod_rewrite指令的附加.htaccess
文件?如前所述,这些指令假定您这样做,否则由于重写循环,您将得到一个500错误。如果需要,可以修改这些指令以说明这一点。您在.htaccess
文件中有任何其他指令吗?(我假设您在/react
子目录中必须已经有.htaccess
文件,否则,react URL是如何路由的?)请注意,对于任何500个错误,您都应该检查服务器的错误日志以了解此错误的详细信息。我已经更新了答案。