Способы обработки с помощью .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, сколько вам нужно, но они всегда сначала обрабатываются из верхнего. Я понимаю, что это звучит как здравый смысл, но это важно знать при отладке.