Попытка сократить URL-адреса с помощью .htaccess, но с ошибками конфигурации

0

Краткое введение: Я пытаюсь создать короткую систему 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]

Может ли кто-нибудь сообщить о причине проблемы? Извините за недостаток понимания части регулярного выражения. Я пытаюсь справиться с этим. Я бы просто хотел, чтобы исправление было на месте, поэтому я могу продолжить свой проект, так как это лишь небольшая его часть.

Большое спасибо.

  • 0
    Является ли "URL" папка?
  • 0
    На самом деле. Он находится в доступном виртуальном хосте и содержит файл index.php. Все файлы принадлежат пользователю apache.
Показать ещё 2 комментария
Теги:
.htaccess

1 ответ

0
Лучший ответ

Это перенаправит его:

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]
  • 0
    К сожалению, я дословно скопировал вышеупомянутую конфигурацию, и она все еще отвлекает меня на страницу ошибки конфигурации. Вы сами это проверили?
  • 0
    Да, позвольте мне проверить еще раз ..
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню