Назад | Перейти на главную страницу

Перезаписать правило в .htaccess

Я задал этот вопрос в Stackoverflow, но один из респондентов посоветовал мне задать его здесь. Интересно, можно ли это сделать в htaccess?

У меня есть этот URL:

https://www.example.com/folder/New.jsp?par=new1 

... который я хочу перенаправить на:

 https://www.example.com/folder/New.jsp

как мне это сделать?

В основном у меня есть par=new1|new2|new3|new4 который хотел бы быть перенаправлен на https://www.example.com/folder/New.jsp.

Мы будем очень благодарны за любую вашу помощь.

Чтобы соответствовать определенным параметрам URL, вам необходимо использовать mod_rewrite с состояние что сверяется с QUERY_STRING серверная переменная. Mod_alias Redirect и RedirectMatch Директивы соответствуют только URL-пути и не могут использоваться для проверки строки запроса.

Попробуйте следующее в верхней части .htaccess файл в корне документа:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^par=(new1|new2|new3|new4) [NC]
RewriteRule ^folder/New\.jsp$ /$0 [NC,QSD,R,L]

В QSD флаг (требуется Apache 2.4) на RewriteRule директива отбрасывает исходная строка запроса из перенаправленного URL-адреса. Если вы все еще используете Apache 2.2, используйте ? в конце замена строка вместо этого. Например: RewriteRule ^folder/New\.jsp$ /$0? [NC,R,L].

$0 - это обратная ссылка на весь URL-путь, который соответствует RewriteRule шаблон. т.е. folder/New.jsp.

Обратите внимание, что это 302 (временное) перенаправление. Если требуется 301 (постоянное) перенаправление, измените R флаг для чтения R=301.

Если вам просто нужно снять параметры, это довольно просто

RedirectMatch https://www.website.com/folder/New.jsp(\?par=.[a-z])  https://www.website.com/folder/New.jsp

Mod_rewrite не требуется.