2013-03-13 2 views
1

Я знаю, что есть несколько статей об этом, но я новичок, когда речь идет о переадресации в файлах .htaccess, поэтому извините мое невежество! Я пробовал несколько вещей, но я не могу заставить это работать.301 перенаправление с? и & .asp

У меня есть старый url http://domain.com/ourlocations.asp?cat=41&id=41, который я пытаюсь перенаправить в .htaccess на http://domain.com/locations. Первый/старый URL-адрес включен в печать через QR-код, поэтому я немного застрял. Я пробовал использовать простой Redirect 301, но не повезло. Я видел некоторые сообщения об использовании RewriteRule, но у меня есть существующий код в .htaccess (WordPress) и боюсь изменить, если он сбит сайт.

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

У кого-нибудь есть идеи? Спасибо за ваше время.

ответ

0

Спасибо за всю помощь, в конце концов, поигрывая вокруг мы получили решение:

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

RewriteRule ^ourlocations\.asp http://domain.com/locations? [L,R=301] 

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 
1

Этот RewriteRule должен перенаправить http://domain.com/ourlocations.asp?cat=41&id=41 на http://domain.com/locations.

  • RewriteCond директивы проверки строки запроса аргументов.
  • Первая часть RewriteRule матчи, если вы в /ourlocations.asp
  • в подмене части RewriteRule роспускного ? полосы все параметры запроса (удалить его, если вы хотите, чтобы параметры, передаваемые по-)
  • [R=301] говорит Apache, чтобы сделать 301 редирект

-

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

RewriteRule ^index\.php$ - [L] 

RewriteCond %{QUERY_STRING} cat=41 
RewriteCond %{QUERY_STRING} id=41 
RewriteRule ^ourlocations\.asp http://domain.com/locations? [R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 
+0

Спасибо @kjetilh за ответ. К несчастью, у меня был выход, и он все еще не работал. Я попробовал несколько различных вариантов, чтобы добавить его, в пределах за его пределами, добавив RewriteEngine On, но никто не работал. Это проблема с настройкой сервера? – mickmaster

+0

@mickmaster Извините, brainlag, я вижу, вы используете WordPress. Совсем немного сложнее включать настраиваемые директивы .htaccess в WordPress, поскольку он автоматически генерирует (и переопределяет) директивы в файле .htaccess. Я вернусь к этому позже, иначе вы могли бы найти что-то вроде «WordPress custom.htaccess Rewrite rules "и посмотреть, что вы найдете – kjetilh

+0

Спасибо за ваше время. Я сделаю поиск с вашим предложением и посмотрю, что получится. Еще раз спасибо. – mickmaster

-1

Еще одно решение, которое может работать:

После # END WordPress добавить:

RedirectMatch 301 /index.asp(.*) http://www.domain.com/$1 

Пример:

www.domain.com/index.asp/string=test&url=22 

будет перенаправлять:

www.domain.com/string=test 

и теперь нужно будет написать 301 после того, как это так:

RewriteCond %{QUERY_STRING} ^string=test&url=22$ 
RewriteRule ^$ http://www.domain.com/requiredPage/? [R=301,L] 

Теперь URL-адрес: www.domain.com/index.asp/string=test&url=22 будет 301 к www.domain.com/requiredPage/

Смежные вопросы