Java перенаправляет 301, но браузер неправильно открывает новый URL-адрес

avatar
MrSalesi
8 апреля 2018 в 09:07
286
1
0

Я переместил все данные из старого домена в новый. Многие ссылки проиндексированы Google, и это важно для нас. Поэтому я хочу перенаправить 301 все ссылки, как показано ниже:

my_domain.ir/Server?do=content&id=24

до

my_domain.com/Server?do=content&id=24

Приведенный ниже код — это Server.java, который является сервлетом

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {        
    System.out.println("_______________________________________________");

    String url = request.getRequestURL().toString() +"?"+ request.getQueryString();
    System.out.println(url);// http://my_domain.ir/Server?do=content&id=24
    url = url.replace(".ir", ".com");
    url = url.replace("localhost:9090", "mydomain.com");//to test from localhost
    System.out.println(url);//http://my_domain.com/Server?do=content&id=24
    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    response.setHeader("Location", url);
    response.setHeader( "Connection", "close" );
    System.out.println("_______________________________________________");
}

после звонка я вижу http://my_domain.ir я вижу 301 код перенаправления Но в адресной строке "http://my_domain.com/Server" и браузер не открывает ни одной страницы.

Я пытаюсь перенаправить всех на http://my_domain.com/index_test.html, но результат тот же.

Для нас очень важно сохранить позицию моего домена в Google. Опасна ли эта проблема?

Источник
SeverityOne
8 апреля 2018 в 09:34
1

Не лучше ли использовать правило перезаписи на вашем HTTP-сервере?

MrSalesi
8 апреля 2018 в 10:36
0

К сожалению, я не могу получить доступ к конфигурации tomcat на этом сервере. Но может быть администратор сервера внесет некоторые изменения, но это не так надежно.

gsl
9 апреля 2018 в 16:15
0

Возможно, ваш браузер настроен так, чтобы не следовать ответам 301.

MrSalesi
11 апреля 2018 в 09:29
0

Я тестирую другой браузер и другую систему,

Ответы (1)

avatar
SeverityOne
8 апреля 2018 в 13:26
0

Только что посмотрел, потому что я помнил это (примерно 10 лет назад), но вы можете сделать перенаправление намного проще:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {        
    System.out.println("_______________________________________________");

    String url = request.getRequestURL().toString() +"?"+ request.getQueryString();
    System.out.println(url);// http://my_domain.ir/Server?do=content&id=24
    url = url.replace(".ir", ".com");
    url = url.replace("localhost:9090", "mydomain.com");//to test from localhost
    System.out.println(url);//http://my_domain.com/Server?do=content&id=24
    response.sendRedirect(url);
    System.out.println("_______________________________________________");
}

Отказ от ответственности: я не проверял правильность перезаписи вашего URL.