Создание SEO и дружественных / читаемых URL-адресов человека с использованием PHP и IIS7 - PullRequest
1 голос
/ 29 июля 2011

Я использую PHP5.3.6 и IIS7. В настоящее время я работаю над продуктовым сайтом, где у меня есть одна php-страница, которая динамически генерирует страницу на основе строки запроса, такой как /product.php?id=12345.

Объем продуктов, которые у меня есть в базе данных, варьируется, но измеряется сотнями. У них есть уникальные идентификаторы и имена.

Я хочу, чтобы на каждой странице были адреса по имени, а не по строке запроса.

Например, вместо:

/product.php?id=12345

Я бы предпочел:

/acme-super-widget-in-blue-with-cool-groovy-gadget-attachment

У меня есть компонент URL Rewrite в IIS7, но я не хочу вводить значения вручную. Я предпочел бы иметь динамический процесс на месте. Я считаю, что необходимая функция здесь заключается в добавлении правила перезаписи URL в файл web.config, но я не уверен, является ли это верным или лучшим подходом.

Спасибо.

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Я бы порекомендовал использовать идентификатор вместе с именем, чтобы вы могли поддерживать продукты с тем же именем (проверка на будущее) или продукты с не-ascii символами ... если у вас есть международные имена.Я также рекомендовал бы использовать только символы ascii в URL-адресах, так как я заметил, что некоторые сайты и браузеры имеют тенденцию расширять символы не ascii до уродливого процента кодирования.

IIS 7 немного сложнее, чем Apache, но я думаю, что это может сработать для вас http://blogs.iis.net/bills/archive/2008/05/31/urlrewrite-module-for-iis7.aspx

Вот пример правила перезаписи, которое удаляет имя из идентификатора и пропускает толькоидентификатор сценария.

IIS 7 Использование модуля по ссылке выше

Соответствующий URL

^([0-9]+)[^/]*/?$

Действие

index.php?id={R:1} [QSA,L]

Apache просто для хорошего беспорядка;)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9]+)[^/]*/?$ index.php?id=$1 [QSA,L]

Вот функция PHP, которая будет генерировать часть имени идентификатора ваших дружественных URL.

function friendlyURL($id, $title) {

    $string = $title;
    $paramcount = func_num_args();
    for ($i = 2; $i < $paramcount; $i++) {
        $string .= "-" . func_get_arg($i);
    }
    $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string);
    $string = htmlentities($string, ENT_COMPAT, "utf-8");
    $string = preg_replace("`&([a-z]+);`i", "", $string);
    $string = preg_replace("`['\[\]]`", "", $string);

    $tmp = $string;
    $string = preg_replace(array("/[^A-Za-z0-9]/", "`[-]+`"), "-", $string);

    $string = trim($string, '-');
    return trim($id . "-" . $string, '-');
}

Это даст вам URL-адреса, такие как

Идентификатор продукта = 12345, Имя = "acme super widget"

/12345-acme-super-widget/

Идентификатор продукта = 12345, Имя = "Японский продукт ギ タ ー"

/12345-japanese-product/
0 голосов
/ 30 июля 2011

Это выглядит так: http://www.iis.net/download/URLRewrite это именно то, что вам нужно.

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