O comportamento padrão do Drupal é passar todos os argumentos, independentemente de terem sido solicitados ou não. Às vezes, esse comportamento é desejado. No entanto, eu preciso retornar um 404 para qualquer coisa, exceto uma string de consulta.
Exemplo do problema http://drupal.org/project/modules http://drupal.org/project/modules/google.com <- Isso deve retornar um 404; 200 dados. Pena de conteúdo duplicado!
O módulo views 404 assume que, por padrão, você não deseja que argumentos sejam transmitidos. No entanto, não há versão D7 do módulo.
Mas a página do projeto diz que 404s para visualizações também podem ser realizados configurando Global: Null em Arguments.
Obviamente, no D7, "argumentos" agora são "filtros contextuais", mas não tenho certeza sobre quais configurações adicionar ao filtro contextual Global: null para obter o resultado desejado.
Qualquer ajuda seria apreciada.
:)
Eu estava editando a tela errada e a exibição não estava funcionando como deveria. Não há necessidade de usar o código PHP para validar o argumento; veja a resposta atualizada.Você pode fazer isso usando visualizações prontas para uso. Em todas as configurações de filtro contextual, você pode ver uma caixa de seleção "Especificar critérios de validação", para ver mais configurações.
Em seguida, você pode selecionar "validador" com base nas condições de exibição. Se você deseja validar personalizado, selecione o código php. Retorne True ou False no código php com base nas suas condições de validação.
Por fim, selecione "Ação a ser executada", pois o Acesso à exibição é negado! Veja abaixo a captura de tela para o filtro contextual nid.
fonte