2017-02-05 7 views
1

Мое требование - проверить, существует ли 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 в условие, проверяющее запись карты. Как это исправить? Также есть лучшее решение для моей проблемы?

ответ

1

Нет, $1 не возвращает URL-адрес. Он возвращает результат из первой группы, захваченной в текущем RewriteRule регулярном выражении.

Вы действительно меняете URL-адрес своей картой или просто проверяете ее? Если это просто тест, все, что вам нужно:

RewriteMap plp-map dbm:${http.server.install.base}/dynamicmaps/plp-map 
ErrorDocument 404 /content/homedepot_ca/en_ca/home/errors/404.html 

RewriteCond ${plp-map:$1} ="" 
RewriteRule ^(/en/home/categories/.*)$ - [R=404,L] 

Если вы также изменить его, добавьте это после того, выше:

RewriteCond ${plp-map:$1} !="" 
RewriteRule ^(/en/home/categories/.*)$ ${plp-map:$1} [PT,QSA] 
+0

.. это фу решить мою проблему и упростили правила, как Что ж. спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^