php htacess配置服务静态文件和动态文件

9w11ddsr  于 2023-09-29  发布在  PHP
关注(0)|答案(3)|浏览(121)

我的服务器结构是

/build/(这里部署了一个react应用)和**/API/**(这里部署了一个PHP应用)

我想将www.test.com/ * 的流量重定向到**/build**,将www.test.com/api/ * 的流量重定向到**/API**
这是我目前拥有的.htaccess

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(.+\.(js|css|svg|png))$ /build/$1 [L]

RewriteRule . /build/index.html [L]

# Rewrite the base route to /build/index.html
RewriteRule ^$ /build/index.html [L]

此规则适用于除/(root)之外的所有测试用例,该测试用例呈现根索引文件而不是/build/index. html下的根索引文件

6tr1vspr

6tr1vspr1#

试试这个:

RewriteEngine On
RewriteBase /

# Rewrite requests to /api/ to the /api directory
RewriteRule ^api/ /api/$1 [L]

# Rewrite requests for static files to the /build directory
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^build/ - [L]

RewriteRule ^(.+\.(js|css|svg|png))$ /build/$1 [L]

# Rewrite everything else to /build/index.html
RewriteRule ^ /build/index.html [L]

此配置将把对/api/的请求重定向到/api目录,从/build目录提供静态文件,对于所有其他请求,它将把它们重写为/build/index.html.。对根^规则的修改确保根URL提供正确的/build/index.html文件。

编辑:

如果您怀疑问题与/api/请求的RewriteRule有关,您可以尝试以下修改来处理这些请求:

RewriteRule ^api/ - [L]

# Serve PHP scripts under /api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/(.*)$ /api/$1 [L]
w8biq8rn

w8biq8rn2#

RewriteEngine On
RewriteBase /

RewriteRule ^(api)($|/) - [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(.+)\.js$ /build/$1.js [L]
RewriteRule ^(.+)\.css$ /build/$1.css [L]

RewriteRule . /build/index.html [L]

这种方法似乎是有效的

bihw5rsg

bihw5rsg3#

这就是我如何从头开始编写htaccess,以满足您在书面描述和已经提供的代码中的要求:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} ^www\.test\.com$ [NC]
RewriteRule ^api/(.*)$ /api/$1 [L]

RewriteCond %{HTTP_HOST} ^www\.test\.com$ [NC]
RewriteRule ^(.*)$ /build/$1 [L]

RewriteCond %{HTTP_HOST} ^www\.test\.com$ [NC]
RewriteRule ^$ /build [L]

[Edit:固定顺序--必须爱复制/粘贴错误,我的错误!]

相关问题