@16Gb

Как сделать редирект с htaccess c get параметрами?

Пытаюсь сделать редирект с 1 ссылки на вторую, но сайт даже не реагирует
/forum/46-24786-1

/forum/index.php?threads/46/24786/page-1

RewriteRule ^forum/([^&]+)-([^&]+)-([^&]+)$ /forum/index.php?threads/%1/%2/page-%3 [L,R=301]

Вот моя попытка
  • Вопрос задан
  • 728 просмотров
Решения вопроса 1
@16Gb Автор вопроса
/forum/46-24786-1
/forum/index.php?threads/46/24786/page-1

46 это номер раздела
24786 номер треда
1 номер страницы

я просто хотел передать эти параметры

это не работает, редиректа не происходит
RewriteRule ^forum/([^&]+)-([^&]+)-([^&]+)$ /forum/index.php\?threads/$1/$2/page-$3 [L,R=301]

если вставляю
RewriteCond %{REQUEST_URI} forum/([^&]+)-([^&]+)-([^&]+)
RewriteRule forum .*$ /forum/index.php?threads/%1/%2/page-%3
то ошибка 500 стразу

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 503 default

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
RewriteRule ^.*$ index.php [NC,L]


вот весь мой htaccess

RewriteRule ^forum/46-24786-1$ /forum/index.php?threads/46/24786/page-1 [L,R=301]

даже такой прямой без параметров не работает

СДЕЛАЛ ТАК
RedirectMatch 301 ^/forum/(\d*)-(\d*)-(\d*)$ /forum/index.php?threads/$1/$2/page-$3
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
так бы выглядел редирект С гет параметра на обычный урл.
# 301 --- http://www.mydefile.ru/lookbook/?type=Лукбуки&PAGEN_1=2 => http://www.mydefile.ru/news/lookbooks/
RewriteCond %{QUERY_STRING} (^|&)type=Лукбуки($|&)
RewriteCond %{QUERY_STRING} (^|&)PAGEN_1=2($|&)
RewriteRule ^lookbook/$ /news/lookbooks/? [L,R=301]

В твоем случае наоборот тут все еще значительно проще, ты просто перепутал % и $
RewriteRule ^forum/([^&]+)-([^&]+)-([^&]+)$ /forum/index.php\?threads/$1/$2/page-$3 [L,R=301]

И не забудь экранировать вопрос
А проценты делаются так
RewriteCond %{REQUEST_URI}  forum/([^&]+)-([^&]+)-([^&]+)
RewriteRule forum .*$ /forum/index.php?threads/%1/%2/page-%3

ТАк же их можно комбенировать скобки из рула и конда
тогда будет так
$1%1
Теперь по поводу регулярки что-то она у тебя очень странная. что именно она по твоему мнению делает ?
Скинь пару урлов которые она должна выделять
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы