Как вручную создать Дружественные URL? (PHP) - PullRequest
3 голосов
/ 22 марта 2010

Как вручную создать Дружественные URL?(PHP) Итак, я создал простой php-файл, который выводит запрашиваемую строку.Теперь он имеет форму echo.php?string=bla+bla+bla&font=times Я хочу видеть это как echo/bla+bla+bla/times Как это сделать (не используя внешние библиотеки)?

Ответы [ 6 ]

5 голосов
/ 22 марта 2010

Обычно это делается с расширением mod_rewrite Apache. В файле .htaccess вы должны поместить что-то вроде:

RewriteEngine On
RewriteRule ^echo/(.+?)/(.+)$ echo.php?string=$1&font=$2 [L]

Первая строка активирует mod_rewrite. Вторая устанавливает регулярное выражение для маршрутизации запросов, соответствующих этому шаблону, в нужный файл PHP.

3 голосов
/ 22 марта 2010

Вам нужно будет использовать механизм перезаписи , который является mod_rewrite на сервере apache.

2 голосов
/ 22 марта 2010

Подобно идее обработчика 404, с очень простым RewriteRule вы можете легко переместить управление перезаписью URL в PHP, что может быть проще для вас:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . rewrite.php [L]

В rewrite.php у вас есть массив шаблонов URL RegEx. Их можно использовать для сопоставления текущего URL-адреса (используйте $_SERVER['REQUEST_URI']) и передачи частей URL-адреса в реальный файл. Затем параметры можно просто поместить в массив $_GET и включить правильный файл.

Например, массив может выглядеть так:

$rules = array(
    array(
        'articles/view/([0-9]+)',
        'articles.php?id=$1'
    ),
    array(
        'articles/delete/([0-9]+)',
        'articles.php?id=$1&action=delete'
    ),
);
2 голосов
/ 22 марта 2010

Чтобы превратить echo.php в echo, вам потребуется использовать функцию перезаписи для вашего веб-сервера. Если вы используете Apache, mod_rewrite является королем.

В остальном вам нужно просто разобрать $_SERVER['REQUEST_URI'], используя регулярное выражение . Вы также можете использовать mod_rewrite, чтобы выполнить эту часть, но в случае, если это не вариант, это можно сделать на простом PHP.

1 голос
/ 22 марта 2010

Посмотрите на файл .htaccess, созданный в новом проекте Zend Framework. Вы можете использовать его без остальной части фреймворка или использовать его в качестве примера для собственного метода перезаписи URL.

0 голосов
/ 22 марта 2010

В качестве альтернативы переписыванию URL через mod_rewrite, просто установите php-файл в качестве обработчика ошибок 404. Этот файл может анализировать URL и определять, как он должен обрабатываться.

 $path_parts = explode('/', $_SERVER['PATH_INFO']);
 echo $path_parts[0]. ', '.$path_parts[1].' font';

По соображениям производительности вы не захотите настроить apache так, чтобы он не отправлял определенные типы файлов (например, gif, jpg, png и т. Д.) В PHP для обработки.

Хотя есть несколько разных вещей, которые вы можете сделать, как упомянуто в ответах, вы не можете сделать это без настройки конфигурации на веб-сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...