Я пытаюсь и не могу в данный момент переписать мои URL-адреса для дружелюбия. Можете ли вы указать, где я могу ошибиться?
Я пытаюсь переписать этот URL:
http://www.chillisource.co.uk/product?&cat=Grocery&q=Daves%20Gourmet&page=1&prod=B0000DID5R&prodName=Daves_Insanity_Sauce
К этому:
http://www.chillisource.co.uk/product/Grocery/Daves%20Gourmet/1/B0000DID5R/Daves_Insanity_Sauce
Это мой .htaccess
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php RewriteRule ^product/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+) /product?&cat=$1&q=$2&page=$3&prod=$4&prodName=$5
Первая часть позволяет мне идти без .php в filenane.
Это в настоящее время дает мне ошибку 500, когда я пытаюсь перейти к: http://www.chillisource.co.uk/product/Grocery/Daves%20Gourmet/1/B0000DID5R/Daves_Insanity_Sauce
Я читал mod_rewrite, но я начинающий программист и считаю это трудным делом. Я не понимаю, как $ 1, $ 2, $ 3, $ 4, $ 5, которые являются переменными в моем URL, передаются на другую сторону, ((a-zA-Z0-9) +) правильно?
Заранее спасибо.
$ 1 соответствует вашему первому набору скобок в первой части вашего правила перезаписи. $ 2 ко второму набору скобок и т. Д.
Daves%20Gourmet
содержит пробельный символ, который не учитывается в вашем втором шаблоне, т.е. вещи между вторым набором круглых скобок. Опять же, вы не заботитесь о _
в URL-адресе.
Я бы попробовал это
RewriteRule ^product/([a-zA-Z]+)/([\sa-zA-Z0-9]+)/([0-9]+)/([A-Z0-9]+)/([a-zA-Z_]+) /product?&cat=$1&q=$2&page=$3&prod=$4&prodName=$5
Предполагая, что параметр вашей страницы всегда является целым числом, а ваш 4-й параметр содержит только буквы верхнего регистра.