我目前正在一个静态网站上工作,在那里我需要将最后一个URI元素作为查询参数传递到某些页面上,。
我所有的静态html页面都在/pages/**/*目录中,其中的路径与最终网站上所需的路径直接相关。这意味着/products/kitchen需要显示/pages/products/kitchen.html。在本例中,如果文件/pages/products/kitchen.html不存在,我将尝试/pages/products.html,并将kitchen作为名为id (?id=kitchen)的查询参数传递。/assets目录中存在静态资产,因此不应该将存在的文件重写到/pages目录中。如果没有请求的路径,我想重定向到默认主页。probe.json规则用于在kubernetes集群中进行生动活泼检查,我只是将其保存在其中,因为我无法100%确定它不是罪魁祸首。
我试图以一种RewriteCond方式将多个RewriteRule和if > else if > else if > else连接在一起,但这似乎在某种程度上失败了。不幸的是,这些错误很难调试,因为除了浏览器404-error之外,没有任何迹象显示正在发生什么。目前,只有现有文件和默认页的规则才能正常工作。任何帮助,我正在做的错事,将不胜感激!
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? - [L]
<files probe.json>
order allow,deny
allow from all
</files>
RewriteCond pages/$1.html -f
RewriteRule ^(.*)$ pages/$1.html [NC,L]
RewriteCond pages/$1.html -f
RewriteRule ^(.*(?=[/]))/(.*)$ pages/$1.html?id=$2 [NC,L]
RewriteRule ^$ pages/home.html [L]发布于 2022-04-24 10:29:39
我找到了解决这个问题的办法。
%{DOCUMENT_ROOT}。。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? - [L]
<files probe.json>
order allow,deny
allow from all
</files>
RewriteCond %{DOCUMENT_ROOT}/pages/$1.html -f
RewriteRule ^(.*)$ /pages/$1.html [NC,L]
RewriteCond %{DOCUMENT_ROOT}/pages/$1.html -f
RewriteRule ^(.*(?=[/]))/(.*)$ /pages/$1.html?id=$2 [NC,L]
RewriteRule ^$ /pages/home.html [L]https://stackoverflow.com/questions/71987134
复制相似问题