Apache Htaccess переписать URL для SEO дружелюбие - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь и не могу в данный момент переписать мои URL для SEO дружелюбия. Можете ли вы указать, где я могу пойти не так?

Я пытаюсь переписать этот 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 Ответ

0 голосов
/ 08 ноября 2011

$ 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-й параметр содержит только заглавные буквы.

...