如果网址不正确,如何重定向页面?

时间:2016-12-25 17:02:45

标签: php .htaccess

例如,如果在问号之后还有另一个单词,则会重定向到主页。 问号后,只能出现lang=hylang=rulang=en这个词:

https://it-center.am/?lang=hy

但是否则它应该重定向到主页。例如,不能有这样的网址:

https://it-center.am/?lang=hyyy

我应该更改.htaccess中的内容吗?

这是languages.php的代码

define('LANGUAGE_DIR', $_SERVER['DOCUMENT_ROOT']."/language/", false);
define('TEMPLATE_DIR', $_SERVER['DOCUMENT_ROOT']."/", false);

$languages = [
    "hy",
    "ru",
    "en",
];

session_start();

if (!isset($_SESSION['lang']) OR !isset($_GET['lang']))
{
    $_SESSION['lang'] = $languages[0];
    $language = $_SESSION['lang'];
}
else {
    $language = $_GET['lang'];

}
include_once(LANGUAGE_DIR . $language . '.php');

$valid = array("en", "ru", "hy");
    if (!in_array($_GET["lang"], $valid)) {
    header("Location /index.php?lang=hy");
    die();
}

2 个答案:

答案 0 :(得分:2)

为此,我想说你需要使用.php来处理它。我首先要定义一个有效代码列表,然后如果请求不匹配,我会重定向它。

$valid = array("en", "ru", "hy");
if (!in_array($_GET["lang"], $valid)) {
  header("Location: ./?lang=en");
  die();
}

答案 1 :(得分:1)

您可以在.htaccess

中使用
RewriteEngine on
RewriteCond %{QUERY_STRING} lang= [NC]
RewriteCond %{QUERY_STRING} !lang=(?:hy|ru|en)(?:&|$) [NC]
RewriteRule ^ https://it-center.am/? [R=301,L]