.htaccess 根据条件重写为 index.php 或 index.html
.htaccess rewrite to index.php or index.html based on condition
我对 htaccess
不是很好,我试图找到我的问题的答案,但到目前为止运气不好。
所以我有这个 .htaccess
重写:
RewriteCond %{REQUEST_URI} /(api|nova|nova-api)
RewriteRule .* /index.php
效果很好。
该网站是一个 Angular 站点,其中我有由 JS 路由的动态 URL。
因此,如果我打开基域:example.com
效果很好,因为 index.html
已提供服务。
但是如果我打开这样的路由:example.com/example-route
。它说 404.
请问我该如何修改.htaccess
文件?
RewriteCond %{REQUEST_URI} /(api|nova|nova-api)
RewriteRule .* /index.php
在 API 重写为 index.php
之后,您似乎只需要将请求重写为 index.html
。但是,您应该修改现有规则以添加 L
标志,并且应锚定与请求匹配的正则表达式(尽管 条件 根本不需要,因为 URL 检查应该在 RewriteRule
指令本身中执行。
例如,请尝试以下操作:
# "index.html" needs to take priority when requesting the root directory
DirectoryIndex index.html
# Abort early if request is already "index.html" or "index.php"
RewriteRule ^index\.(html|php)$ - [L]
# Rewrite certain requests to Laravel API
RewriteRule ^(api|nova|nova-api)($|/) index.php [L]
# Rewrite everything else to Angular
# (unless it already maps to a file or directory)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html [L]
由于“主页”已经运行正常,这表明 DirectoryIndex
已在服务器配置中设置正常(并优先考虑 index.html
),尽管明确将其设置为 [=12] =](如上)是更优的,如果这就是所需要的。
我对 htaccess
不是很好,我试图找到我的问题的答案,但到目前为止运气不好。
所以我有这个 .htaccess
重写:
RewriteCond %{REQUEST_URI} /(api|nova|nova-api)
RewriteRule .* /index.php
效果很好。
该网站是一个 Angular 站点,其中我有由 JS 路由的动态 URL。
因此,如果我打开基域:example.com
效果很好,因为 index.html
已提供服务。
但是如果我打开这样的路由:example.com/example-route
。它说 404.
请问我该如何修改.htaccess
文件?
RewriteCond %{REQUEST_URI} /(api|nova|nova-api) RewriteRule .* /index.php
在 API 重写为 index.php
之后,您似乎只需要将请求重写为 index.html
。但是,您应该修改现有规则以添加 L
标志,并且应锚定与请求匹配的正则表达式(尽管 条件 根本不需要,因为 URL 检查应该在 RewriteRule
指令本身中执行。
例如,请尝试以下操作:
# "index.html" needs to take priority when requesting the root directory
DirectoryIndex index.html
# Abort early if request is already "index.html" or "index.php"
RewriteRule ^index\.(html|php)$ - [L]
# Rewrite certain requests to Laravel API
RewriteRule ^(api|nova|nova-api)($|/) index.php [L]
# Rewrite everything else to Angular
# (unless it already maps to a file or directory)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html [L]
由于“主页”已经运行正常,这表明 DirectoryIndex
已在服务器配置中设置正常(并优先考虑 index.html
),尽管明确将其设置为 [=12] =](如上)是更优的,如果这就是所需要的。