Php 如何使用htaccess将子URL重写到子目录?

Php 如何使用htaccess将子URL重写到子目录?,php,reactjs,.htaccess,Php,Reactjs,.htaccess,我的后端是PHP,在前端,我希望有一个reactJS编译的项目,允许用户通过example.com/app访问该项目,该编译项目的index.html文件放在/var/www/html/reactJS/build/index.html中,我需要以某种方式重写所有example.com/app请求否则,reactJS应用程序将无法正常工作 这就是我一直在努力做的事情,而不是为我工作: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f Rewr

我的后端是PHP,在前端,我希望有一个reactJS编译的项目,允许用户通过
example.com/app
访问该项目,该编译项目的
index.html
文件放在
/var/www/html/reactJS/build/index.html
中,我需要以某种方式重写所有
example.com/app
请求否则,reactJS应用程序将无法正常工作

这就是我一直在努力做的事情,而不是为我工作:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/app /reactjs/build/index.html [QSA,L]
IDK还有什么可以尝试的,我想知道如何解决这个问题的方向:)

.htaccess
中,由
重写规则
模式匹配的URL路径不以斜杠开头,因此需要重写:

RewriteRule ^app /reactjs/build/index.html [L]
此处也不需要
QSA
标志

更新:我使用的网站是wordpress网站

这些指令需要在WordPress前端控制器之前执行,否则这些对
/app/..
的请求将被路由到WordPress。例如:

# ReactJS routing...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app /reactjs/build/index.html [L]

# BEGIN WordPress
:
.htaccess
中,由
重写规则
模式匹配的URL路径不以斜杠开头,因此需要重写:

RewriteRule ^app /reactjs/build/index.html [L]
此处也不需要
QSA
标志

更新:我使用的网站是wordpress网站

这些指令需要在WordPress前端控制器之前执行,否则这些对
/app/..
的请求将被路由到WordPress。例如:

# ReactJS routing...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app /reactjs/build/index.html [L]

# BEGIN WordPress
:

问题是:您的应用程序逻辑在哪里?html文件(“index.html”)是一个不执行任何逻辑的被动文件。@arkascha我在帖子中写到了react的index.html文件的目录,它指向所有需要的JS文件,然后在前端使用react router处理所有路由。我所要做的就是将example.com/app和example.com/app/whatever重写为react的index.html文件,该文件位于/html/reactjs/build/index.htmlI目录下。我怀疑这是否行得通。如果您将所有请求重写到该文件中,那么只有该文件会一次又一次地被传递。那当然不是你想要的!您还希望传递JS文件和其他任何内容。@arkascha明白了,所以将文件放在目录中。。你知道我能做什么吗?问题是:你的应用程序逻辑在哪里?html文件(“index.html”)是一个不执行任何逻辑的被动文件。@arkascha我在帖子中写到了react的index.html文件的目录,它指向所有需要的JS文件,然后在前端使用react router处理所有路由。我所要做的就是将example.com/app和example.com/app/whatever重写为react的index.html文件,该文件位于/html/reactjs/build/index.htmlI目录下。我怀疑这是否行得通。如果您将所有请求重写到该文件中,那么只有该文件会一次又一次地被传递。那当然不是你想要的!您还希望传递JS文件和其他任何内容。@arkascha明白了,所以将文件放在目录中。。你知道我该怎么做吗?它不起作用:/当我试图转到exmaple.com/app时,我遇到了一个404错误。你的
.htaccess
文件中还有其他指令吗?(这将与您最初使用的
RewriteCond
指令一起使用。)是的,我使用的站点是wordpress站点,这是完整的htaccess文件:这些指令需要放在wordpress前端控制器之前。我已经更新了我的答案。好了,现在可以了,最后几件事:1。当我加载页面时,我可以看到它试图加载css和js文件,但它得到index.html文件,因此没有呈现任何内容,我只看到一个白色空白页面。我试图添加
RewriteCond%{REQUEST\u FILENAME}-因此,如果目录存在,它不会重写目录,但它仍然加载index.html而不是css和js文件。。2.当我转到example.com/app(最后没有/时)时,它尝试获取css和js文件根目录,而不是从当前目录中尝试,但当我添加/它尝试加载正确的文件时,它不起作用:/当我尝试转到exmaple.com/app时,我收到一个404错误。
.htaccess
文件中是否有其他指令?(这将与您最初使用的
RewriteCond
指令一起使用。)是的,我使用的站点是wordpress站点,这是完整的htaccess文件:这些指令需要放在wordpress前端控制器之前。我已经更新了我的答案。好了,现在可以了,最后几件事:1。当我加载页面时,我可以看到它试图加载css和js文件,但它得到index.html文件,因此没有呈现任何内容,我只看到一个白色空白页面。我试图添加
RewriteCond%{REQUEST\u FILENAME}-因此,如果目录存在,它不会重写目录,但它仍然加载index.html而不是css和js文件。。2.当我转到example.com/app(最后没有/时),它会尝试获取css和js文件的根目录,而不是从当前目录中获取,但当我添加/时,它会尝试加载正确的文件