htaccess переписать / перенаправить - PullRequest
0 голосов
/ 30 октября 2011

У меня проблемы с созданием правила перезаписи. URL, который я хочу переписать и в конечном итоге перенаправить, содержит поисковый запрос и выглядит следующим образом:

http://www.mysite.com/pages.php?category=fruit

Я бы хотел перенаправить его на:

http://www.mysite.com/pages.php/fruit

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

RewriteEngine on 
RewriteCond %{QUERY_STRING} =category=fruit` 
RewriteRule ^pages\.php$ pages.php/fruit/ [L,R=301]

переходит к

http://www.mysite.com/home/linux123/m/mysite.com/user/htdocs/pages.php/fruit/

Любой совет по исправлению конструкции правила перезаписи был бы великолепен. Заранее спасибо.

1 Ответ

2 голосов
/ 30 октября 2011

Способ переписывания URL работает так, что он берет несуществующий URL и переписывает его так, чтобы он указывал на существующий. Несуществующий URL - это скорее презентация, нежели функциональная вещь. Вы делаете это наоборот, ссылки на ваших веб-страницах должны быть похожи на http://www.mysite.com/pages.php/fruit, и когда пользователь нажимает на них, они должны быть внутренне перенаправлены на что-то вроде http://www.mysite.com/pages.php?category=fruit. Правило перезаписи должно быть написано соответственно, что будет

^pages\.php/([A-Za-z])*$ pages.php?category=$1 [NC,L]

если категория строго алфавитная, иначе для буквенно-цифровой

^pages\.php/([A-Za-z0-9])*$ pages.php?category=$1 [NC,L]

Вы даже можете проверить свои правила переписывания регулярных выражений, используя этот онлайн-валидатор;

Regex Validator

Надеюсь, это поможет ..

...