Как удалить параметры URL из перенаправления apache 301? - PullRequest
1 голос
/ 17 февраля 2010

Я пытаюсь жестко закодировать перенаправление на своем сайте с URL-адреса на основе категории на фиксированный URL-адрес.

Структура URL:

http://www.mysite.com/my-category-c-17_12.html 

И я пытаюсь перенаправить это на:

http://www.mysite.com/my-static-category.php

Использование следующего перенаправления в моем файле .htaccess:

Redirect 301 /my-category-c-17_12.html http://www.mysite.com/my-static-category.php

Я получаю:

http://www.mysite.com/my-static-category.php?cpath=17_12

Ниже моего перенаправления у меня также есть следующая строка:

RewriteRule ^(.*)-c-([0-9_]+).html$ index.php?cPath=$2&%{QUERY_STRING} 

Я не уверен, является ли это причиной или нет. По сути, я хочу, чтобы способ удалить параметры из перенаправленного URL. Кто-нибудь знает, как с этим бороться? Спасибо!

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Если у вас уже есть mod_rewrite, то почему бы просто не использовать его?

RewriteRule ^(.*)-c-([0-9_]+).html$ $1.php [R=301,L]
0 голосов
/ 17 февраля 2010

Если вы не хотите глобального переписывания (согласно предложению Игнасио Васкеса-Абрамса) .. Вместо использования директивы Redirect, просто используйте RewriteRule. Что-то вроде (полностью):

RewriteEngine on

# Limited redirects
RewriteCond %{REQUEST_FILENAME} my-category-c-17_12.html$ [OR,NC]
RewriteCond %{REQUEST_FILENAME} my-category-c-17_13.html$ [OR,NC]
RewriteCond %{REQUEST_FILENAME} my-category-c-17_14.html$
RewriteRule ^(.*)-c-([0-9_]+).html$ $1.php [R=301,L]

# Other rewrites
RewriteRule ^(.*)-c-([0-9_]+).html$ index.php?cPath=$2 [QSA,L]

Затем вы можете добавить другие URL-адреса в RewriteCond, чтобы разрешить перенаправление большего количества URL-адресов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...