Я создаю модуль apache, который запрещает пользователям проходить цепочку перенаправляемых страниц, чтобы получить нужную им страницу. Это мой код до сих пор:Избегайте переадресации целевой страницы через настраиваемый модуль apache
#include "httpd.h"
#include "http_config.h"
#include "http_protocol.h"
#include "ap_config.h"
#include "http_log.h"
static int subreq_handler(request_rec *r){
if(ap_is_initial_req(r)){
r->content_type = "text/html";
apr_table_set(r->headers_out, "Hostname","127.0.0.2");
request_rec* rr=ap_sub_req_method_uri("GET","/folder",r,NULL);
if (rr){
char *l=apr_table_get(rr->headers_out, "location");
ap_rprintf(r,"redir=%s\n", l);
ap_rprintf(r,"rr->status=%d\n", rr->status);
ap_destroy_sub_req(rr);
}
return DONE;
}
}
static void subreq_register_hooks(apr_pool_t *p){ap_hook_fixups(subreq_handler, NULL, NULL, APR_HOOK_FIRST);}
module AP_MODULE_DECLARE_DATA subreq_module={STANDARD20_MODULE_STUFF,NULL,NULL,NULL,NULL,NULL,subreq_register_hooks};
код возвращает статус 301, который хорошо, когда я заменяю /folder
в моем коде с фактическим именем папки без косой черты и значение REDIR также правильно и заполнены со всей новый URL.
Я хочу, чтобы это произошло с любым запросом URI, но когда я попытался запрос PHP-файл вместо (заменить /folder
с /path/to/file.php
), который содержит инструкции для переориентирования, статус Возвращается 200, когда он должен быть 301.
Ниже приведен код PHP, используемый в файле PHP.
<?php
header("HTTP/1.1 301 Moved",true);
header("Location: /",true);
?>
Кто-нибудь знает, как сделать апачский суб-запрос любого домена в локальной сети и в любой файл, а файл вернуть истинный статус и, если состояние 301, иметь его вернуть новый истинный место нахождения? Если да, пожалуйста, сообщите.
Файл не найден другая история. То, что я пытаюсь сделать, - это уменьшить количество цепочек перенаправления *, чтобы вместо перенаправления пользователя на перенаправление, а затем перенаправление, а затем перенаправление и т. Д., Пользователь будет перенаправлен только один раз. – Mike
Извините. Возможно, это поможет другим дать вам лучший ответ, если вы разместите перенаправления, которые вы пытаетесь уменьшить. – user2182349
Каждый из них. Его сложно идентифицировать, поскольку этот код подходит к концу сервера, на котором размещено много веб-сайтов, поэтому я делаю каждому гостю услугу (пытается сделать) один модуль, который уменьшает требуемые переадресации до максимум. – Mike