Мое требование - проверить, существует ли url в файле перезаписи. Если не существует, то он должен показать свою пользовательскую страницу 404 с кодом состояния 404.Как проверить, существует ли uri в rewritemap else goto 404 page?
Первоначально этот код служит цели:
RewriteMap plp-map dbm:${http.server.install.base}/dynamicmaps/plp-map
RewriteCond %{REQUEST_URI} ^/en/home/categories/.*
RewriteRule ^(.*) ${plp-map:$1|/content/mysite/en_ca/home/errors/404.html} [PT,QSA]
Он заряжал 404 страницы для /invalid.html. Но статус был 200. Затем я разработал правило как goto ErrorDocument, если он не существует на карте; иначе перенаправить. как показано ниже:
RewriteCond %{REQUEST_URI} ^/en/home/categories/.*
RewriteMap plp-map dbm:${http.server.install.base}/dynamicmaps/plp-map
RewriteCond ${plp-map:$1} =""
RewriteRule .? - [S=2]
RewriteCond %{REQUEST_URI} ^/en/home/categories/.*
RewriteRule ^(.*) ${plp-map:$1} [PT,QSA]
RewriteRule .? - [S=1]
RewriteRule ^(.*)$ - [L,R=404]
ErrorDocument 404 /content/homedepot_ca/en_ca/home/errors/404.html
Теперь это правило не удается в третьей строке RewriteCond $ {PLP-карты: $ 1} = "" с ошибкой
map lookup FAILED: map=plp-map[dbm] key=
Не следует ли $ 1 всегда возвращает URL? Так или иначе я пропускаю часть, чтобы передать url в условие, проверяющее запись карты. Как это исправить? Также есть лучшее решение для моей проблемы?
.. это фу решить мою проблему и упростили правила, как Что ж. спасибо. –