0

Я хотел бы /blog/anything-that-doesn't-exist перенаправить на /blog, в то время как любые другие 404s обрабатываются Drupal.разные 404 для подкаталога, когда пути обрабатываются index.php

Мой Htaccess в настоящее время:

ErrorDocument 404 /index.php 

Так что все обрабатывается Drupal. Возможно ли иметь специальное 404-правило подкаталога, но установить это из корневого каталога htaccess? Подкатегория /blog/ генерируется Drupal, поэтому я не могу поместить туда переопределяющий htaccess.

ответ

0

Вы можете использовать следующий код в корневом каталоге/.htaccess файл:

RewriteEngine On 


#If /blog/foo is not a directory 
RewriteCond %{DOCUMENT_ROOT}/blog/$1 !-d 
#And /blog/foo is not a file 
RewriteCond %{DOCUMENT_ROOT}/blog/$1 !-f 
#Then redirect /blog/foo to /blog 
RewriteRule ^blog/(.+)$ /blog/ [NC,L,R] 

Стоит отметить, что время выполнения директивы RewriteRule и ErrorDocument является diffrent. Директива RewriteRule выполняется до директивы ErrorDocument, поэтому любой запрос для/blog/bad_url будет обрабатываться приведенным выше правилом, а все остальные 404-запросы будут обрабатываться с помощью ErrorDocument.