URL перезаписать, чтобы удалить параметры - PullRequest
0 голосов
/ 06 февраля 2011


Я работаю над сайтом, где все страницы на самом деле index.php + параметр «имя», который анализируется и загружает соответствующий шаблон и контент.
URL домашней страницы:
http://www.some_site.com/?page=homepage

1. меня попросили "изменить" URL-адрес домашней страницы на:
http://www.some_site.com
Могу ли я использовать для этого URL rewite и htaccess, и если да, что мне там написать?

работая на моей локальной машине, я попробовал этот код (режим перезаписи включен):

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule /index.php /index.php?page=homepage
</IfModule>

Мне все равно нужно, чтобы параметр 'name' был доступен для кода php, поэтому я могу загрузить файлы шаблонов и CSS.

2. было бы неплохо преобразовать другие страницы (не домашнюю) из (пример)
http://www.some_site.com/?page=products
чтобы:
http://www.some_site.com/products
это менее важно.

Спасибо заранее и хорошего дня: -)

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

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

if (!isset($_GET['page'])) {
    $_GET['page'] = 'homepage';
}

В образовательных целях правило переписывания:

RewriteRule /$ index.php?page=homepage [L]

То есть URI для сопоставления - это просто косая черта (URI начинается после вашего домена в URL). $ означает, что после косой черты не должно быть символов.

Что касается продуктов и тому подобного, предполагая, что отдельные слова состоят только из букв:

RewriteRule /([a-zA-Z]+)$ index.php?page=$1 [L]
1 голос
/ 06 февраля 2011

Следующее должно быть тем, что вы ищете (для вашего второго, менее важного вопроса). Поместите его в свой .htaccess -файл:

RewriteEngine On
RewriteRule ^/([a-zA-z0-9-_]+)/?$ index.php?page=$1
...