.htaccess переписать вопрос - PullRequest
1 голос
/ 27 мая 2009

У меня есть несколько страниц на моем сайте, как и следовало ожидать.

Например:

index.php submit.php view.php? ID = бла

Я хочу переписать их как

Индекс / Отправить/ вид / бла

Каков наилучший способ сделать это?

1 Ответ

1 голос
/ 27 мая 2009

Способы обработки с помощью .htaccess Rewrite могут вызывать головную боль. Это кажется базовым ответом, но если вы не разбираетесь в своих регулярных выражениях, вы потеряетесь.

Однако есть несколько способов справиться с этим. Я предполагаю, что у вас есть только index.php, submit.php и view.php со связанным идентификатором.

RewriteEngine On
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php?id=$2
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php

Вот как это работает: вы говорите .htaccess, чтобы включить Rewrite Engine. Шаг 2, вы даете сайту параметр, который говорит ему, как это делается. Параметр в этом случае выглядит следующим образом: в начале URL-адреса после имени домена проверьте индекс, отправьте или просмотрите. Если таковые существуют, он будет искать идентификатор. Если оба они существуют, он вернет значение в PHP как /(index, submit, or view)?id=$id.

Второй случай, если идентификатор недействителен.

Это простой способ справиться с этим. Более сложный способ справиться с этим будет ...

RewriteEngine On
RewriteRule ^([a-z]+)/?(\d+)?$ /$1.php?id=$2

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

Вы должны обязательно включить некоторые меры предосторожности в свои строки $_GET для возврата ошибок, если имена ошибочны или не возвращают ничего стоящего.

Вы должны поиграть с этим, исследовать регулярные выражения над чашкой кофе и чем-то алкогольным (я считаю, что регулярное выражение является причиной # 1 алкоголизма у современных программистов, но я могу ошибаться ;-P ...) Вы найдете схему, которая удобно вписывается в вашу систему.

Как примечание, у вас может быть столько RewriteRules, сколько вам нужно, но они всегда сначала обрабатываются из верхнего. Я понимаю, что это звучит как здравый смысл, но это важно знать при отладке.

...