2016-01-12 3 views
2

Я переработал веб-сайт (прежние окна/asp), и новый веб-сайт работает на Wordpress.301 Redirect wont work

Так что я хотел сделать 301 переадресацию на все старые ссылки, но почему-то это не работает, и я новичок в перенаправлении .htaccess.

Redirect 301 /index.asp http://balbla.com/#work  
Redirect 301 /index.asp?ID=177 http://blabla.com/portfolio/blablatitle/ 

Кажется, все позади "?" игнорируется. Потому что blabla.com/index.asp?ID=177 перенаправляет сейчас до http://balbla.com/#work?ID=177

Может ли кто-нибудь мне помочь?


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

Mainpages:

/index.asp?inc=index.asp&typ=Nav1&cat=2 
/index.asp?inc=index.asp&typ=Nav1&cat=3 
... 

Портфолио-страницы:

/?inc=index.asp&ID=5 
/?inc=index.asp&ID=24 
/?inc=index.asp&ID=147 

Подгруппы:

/index.asp?inc=agentur/advertising.asp 
/index.asp?inc=agentur/design.asp 
/index.asp?inc=agentur/dialog.asp 
+0

Возможный дубликат http://stackoverflow.com/questions/9537636/do-301-redirects-in-htaccess-need-to-be-in-a-priority-order –

+1

Возможно, этот вопрос поможет вам: [ .htaccess 301 перенаправление не работает?] (http://stackoverflow.com/questions/30132467/htaccess-301-redirect-not-working?rq=1) – alan07sl

+0

S каждый тип шаблона перенаправляется на другой URL-адрес, или буквально каждый URL-адрес должен перенаправляться на другой URL-адрес. Существуют ли какие-либо отношения между исходными и целевыми URL-адресами? – MrWhite

ответ

1

В дополнение к следующему вопрос/ответ, который обсуждает WordPress и mod_rewrite:
.htaccess 301 redirect not working?

Для того, чтобы соответствовать против строки запроса, вам нужно использовать mod_rewrite и тест против QUERY_STRING в состоянии. Например:

RewriteEngine On 

RewriteCond %{QUERY_STRING} =ID=177 
RewriteRule ^index\.asp$ http://blabla.com/portfolio/blablatitle/ [R=301,L] 

RewriteRuleмодель (т. Е ^index\.asp$) совпадает с единственным URL-пути и, в частности, исключает слэш префикс в каталоге на-.htaccess файлов.

Обратите внимание, что CondPattern выше (то есть. =ID=177) использует оператор = так это простое сравнение строк (в отличие от регулярных выражений).

Более конкретные перенаправления должны появиться первыми, причем самые общие (перехватывающие) перенаправления будут последними.


Как уже упоминалось в комментариях, чтобы сделать это более общее и перенаправить все URL, которые имеют форму /index.asp?inc=index.asp&ID=NNN, где NNN есть любые 3 цифры, к одному URL, то вы можете сделать что-то вроде:

RewriteCond %{QUERY_STRING} ^inc=index\.asp&ID=\d\d\d$ 
RewriteRule ^index\.asp$ http://blabla.com/portfolio/blablatitle/ [R=301,L] 
+0

Спасибо за ваш ответ :) Итак, там есть много URL-адресов, например '/index.asp?inc=index.asp&typ=Nav1&cat=2 /index.asp? inc = index.asp & typ = Nav1 & cat = 3' и '/?inc=index.asp&ID=178 /?inc=index.asp&ID=177 /?inc=index.asp&ID=176 /?inc=index.asp&ID=175 /? Вкл = индекс. asp & ID = 174 /?inc=index.asp&ID=173 ... ' Так что я должен сделать это для каждого URL второго? : RewriteCond% {QUERY_STRING} inc = index.asp & ID = 173 RewriteRule ^/$ http://blabla.com/portfolio/blablatitle/ [R = 301, L] –

+0

(Вы должны добавить эту информацию к своему вопросу.) Не обязательно, вы можете использовать регулярные выражения, если для этих переадресаций существует конкретный _pattern_. Я верну свой ответ на примере. – MrWhite

+0

Я добавил различные шаблоны в свой вопрос. Я все еще не уверен, как записать перенаправления: P (потому что каждый из них переходит на другую страницу, например id = 5 -> domain.com/portfolio-somename, id = 200 -> domain.com/portfolio- someothername Если бы вы могли помочь мне с этими шаблонами, это было бы потрясающе! –