2011-12-16 2 views
0

Скажем, у меня есть следующие страницы:htaccess переписать, в массиве?

http://www.site.com/folder/page.php?id=89 
http://www.site.com/folder/page.php?id=85 
http://www.site.com/folder/page.php?id=camel+hump 
http://www.site.com/folder/page.php?id=76 
http://www.site.com/folder/page.php?id=71 
http://www.site.com/folder/page.php?id=frog 
http://www.site.com/folder/page.php?id=62 
http://www.site.com/folder/page.php?id=59 

, и я хочу, чтобы направить следующее:

89, 79, 44, верблюд + горб на следующей странице:

http://www.site.com/folder/page/$1 

Е.Г. :

http://www.site.com/folder/camel-hump (Notice the + replaced with a -) 

и все остальное на следующей странице:

http://www.site.com/folder/overview 

Как бы это сделать?

В принципе, у меня есть около 200 страниц, которые нуждаются перенаправление, и все они имеют один и тот же URL, кроме параметра GET, некоторые из них нуждаются в перенаправлении на /folder/get-parameter странице, а остальные нуждаются в перенаправлении на /folder/overview странице.

мне также нужно + знаки должны быть заменены - знаки, поэтому, например camel+hump становится camel-hump

Как я могу сделать это с помощью правила перезаписи? Что-то вроде:

if match (89|79|44|camel+hump|frog) go to /folder/$1 (but replace + with -) 

все остальное, перейдите /folder/overview

Спасибо

ответ

0

Try:

# Filter out the query string values for id that you want to rewrite 
RewriteCond %{QUERY_STRING} ^id=(89|79|44|camel\+hump|frog) 
RewriteRule ^folder/page.php$ /folder/page/%1? [L] 

# get rid of the + 
RewriteRule ^folder/page/(.+)\+(.+)$ /folder/page/$1-$2 [L] 
+0

почему + не заменяются - знаками, любая идея? – pdlol

+0

Эти правила работают точно так же, как рекламируются, когда я помещаю их в файл .htaccess. Похоже, вы изменили их, чтобы они соответствовали вашей настройке в другом вопросе. –