Intereting Posts

apache htaccess переписать url для удобства использования

Я пытаюсь и не могу в данный момент переписать мои 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) +) правильно?

Заранее спасибо.

Solutions Collecting From Web of "apache htaccess переписать url для удобства использования"

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