htaccess mod_rewrite - вопрос для начинающих - PullRequest
1 голос
/ 16 марта 2011

Допустим, у меня есть один файл, такой как index.php, который должен обрабатывать URL-адрес следующим образом:

index.php?cat=1&sub=2&id=3

Теперь я хочу иметь хорошие URL для этого, которые будут выглядеть так:

index.php/cars/bmw/x3

Мой вопрос: если слово «cars» - это имя в базе данных, связанное с идентификатором «cat / category», равным 1, когда я захожу на index.php / cars, как URL обращается к базе данных 'cars', возьмите соответствующий ему идентификатор '1' и сопоставьте его с URL-адресом?

этот сайт находится в Php / MySQL

Ответы [ 2 ]

1 голос
/ 16 марта 2011

В вашем файле .htaccess внутри DocumentRoot вашего веб-сервера поместите этот код:

RewriteEngine On
RewriteRule ^index.php/cars/(.+)$ /index.php?carName=$1 [QSA,L,NC]

Это вызовет ваш index.php с тем, что будет после / cars / в URL с параметром запроса carName.1004 *

Затем внутри вашего index.php напишите запрос MySQL для запроса к базе данных, что-то вроде: select * from cars_table где name = $ _ REQUEST ["carName"];и вы сможете получить соответствующую запись автомобиля.

Однако, как предостережение, SQL, как и выше, подвергается атаке SQL-инъекций, поэтому лучше использовать подготовленный оператор SQL или Mysqli exetnsion php для запроса к БД вместо прямого ввода значения http-запроса.

1 голос
/ 16 марта 2011

Вам необходимо использовать директиву RewriteMap

Эта страница содержит пример, аналогичный вашему.

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