.htaccess с продуктами (строка) - PullRequest
       0

.htaccess с продуктами (строка)

11 голосов
/ 24 декабря 2011

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

чтобы кто-то мог щелкнуть ссылку, подобную этой:

www.domain.com/product/modular-plastic-lunch-set.html

и посмотрите товар. Теперь моя проблема в том, когда я использую

www.domain.com/product/Modular-Plastic-Lunch-Set.html

не работает,

почему? вот мои правила:

RewriteEngine On
RewriteRule ^product/([a-z0-9\-]+).html$ products.php?name=$1 

Ответы [ 2 ]

12 голосов
/ 24 декабря 2011

Это не работает, потому что у вас нет ни A-Z, ни флага [NC].

Использование флага [NC] приводит к совпадению RewriteRule в регистренечувствительным образом.То есть не имеет значения, отображаются ли буквы в верхнем или нижнем регистре в сопоставленном URI.

RewriteRule ^product/([a-z0-9\-]+).html$ php.php?name=$1 [NC,L,QSA]

или

RewriteRule ^product/([a-zA-Z0-9\-]+).html$ php.php?name=$1 [L,QSA]

Я добавил L:

Флаг [L] заставляет mod_rewrite остановить обработку набора правил.В большинстве случаев это означает, что если правило соответствует, дальнейшие правила не будут обрабатываться.Это соответствует последней команде в Perl или команде break в C. Используйте этот флаг, чтобы указать, что текущее правило должно применяться немедленно, без учета дальнейших правил.

и флаг QSA:

Когда заменяющий URI содержит строку запроса, RewriteRule по умолчанию отбрасывает существующую строку запроса и заменяет ее новой сгенерированной.Использование флага [QSA] приводит к объединению строк запроса.

Дополнительная информация о флагах: http://httpd.apache.org/docs/2.3/rewrite/flags.html

СОВЕТ: если вы ищете продуктыиспользуя имя, вы можете увидеть задержку в вашем запросе, в частности, если у вас нет индекса.Вы должны разобраться в этом, прежде чем он станет безобразным.

2 голосов
/ 24 декабря 2011

Вы ищете только строчные буквы (и цифры). Вам нужно добавить заглавные буквы.

RewriteEngine On
RewriteRule ^product/([A-Za-z0-9\-]+).html$ products.php?name=$1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...