Краткое введение: Я пытаюсь создать короткую систему URL, используя базу данных и php. Однако я столкнулся с гораздо более коротким/быстрым подходом с использованием файла.htaccess, regex и локального файла конфигурации. Однако этот учебник не предлагает много поддержки или объяснений, и это первый экземпляр перезаписи URL, который я видел.
Вот код для скрипта php, который получает аргументы, переданные на страницу:
<?php
$links = parse_ini_file('links.ini');
if(isset($_GET['l']) && array_key_exists($_GET['l'], $links))
{
header('Location: ' . $links[$_GET['l']]);
}
else
{
header('HTTP/1.0 404 Not Found');
echo 'Unknown link.';
}
?>
Таким образом, другими словами, он проверяет, прошел ли аргумент в статическом файле конфигурации (например, здесь будет google: http://example.com/index.php?l=google), и если да, то, конечно, - перенаправляет их на сайт. Содержимое конфигурационного файла:
google = https://www.google.com/
fb = https://www.facebook.com/
Довольно логично. Можете понять, как это работает. Однако моя проблема связана с файлом.htaccess, как упоминалось выше. Я только ругался с регулярным выражением и планировал узнать больше. Однако в настоящее время я недостаточно квалифицирован, чтобы действительно понять синтаксис, необходимый для написания того, что нужно достичь. Что должно произойти, так это то, что пользователь может в основном ввести www.example.com/url/google и перенаправить их на сайт www.example.com/url/index.php?l=google - это то, что я "Мне не удалось добраться до работы, и я просто получаю ошибки конфигурации веб-сервера. Файл конфигурации для.htaccess:
RewriteEngine On
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?l=$1 [L]
Может ли кто-нибудь сообщить о причине проблемы? Извините за недостаток понимания части регулярного выражения. Я пытаюсь справиться с этим. Я бы просто хотел, чтобы исправление было на месте, поэтому я могу продолжить свой проект, так как это лишь небольшая его часть.
Большое спасибо.
Это перенаправит его:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/url/([a-z]+)$ [NC]
RewriteRule ^ /url/index.php?l=%1 [R=301,L]
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?l=$1 [L]