HTTP перенаправить один URL на другой на основе строки запроса
Когда URL /page1.php?abc
запрашивается, я хочу, чтобы он был перенаправлен на /page1.php?xyz
вместо.
В частности, это то, что я хочу сказать клиенту:
HTTP/1.1 301 Moved Permanently
Location: /page1.php?xyz
Я пробовал директиву Apache RedirectMatch, но, похоже, она не поддерживает строки запроса.
Есть ли другая директива, которая поддерживает HTTP-перенаправление для URL-адресов со строками запроса?
В настоящее время я выполняю это, используя функцию заголовка PHP, но это похоже на временный взлом, поэтому я ищу решение Apache.
2 ответа
Ты можешь использовать mod_rewrite
за это. Если этот модуль доступен, вы используете эти правила (должны быть размещены внутри /.htaccess
):
RewriteEngine on
RewriteCond %{QUERY_STRING} ="abc"
RewriteRule ^page1\.php$ /page1.php?xyz [R=301,L]
Существует также решение только для PHP:
if ($_SERVER["QUERY_STRING"] == "abc") {
header("Location: /page1.php?xyz", true, 301);
die;
}
Я хотел бы создать файл PHP, который будет генерировать сам, не знаю, модуль / решение Apache, которое может сделать это.