#regex #.htaccess #mod-rewrite #url-redirection
#регулярное выражение #.htaccess #мод-переписать #перенаправление
Вопрос:
У меня есть несколько динамических URL-адресов. Если я взял URL с параметром запроса, это приводит к странице 404. Итак, я хотел бы выполнить перенаправление с помощью htaccess. Я перепробовал много возможных решений, и ни одно из них не сработало.
Структура URL будет /jobs/job-***.html?something
и на которую мне нужно перенаправить /jobs/job-***.html
Я пробовал что-то подобное, но вернул ошибку 500;
RewriteRule ^jobs/job-([0-9] ).html?$ jobs/job-$1 [NC, L]
Пожалуйста, помогите решить эту проблему.
Ответ №1:
Вы можете использовать это правило:
RewriteCond %{QUERY_STRING} .
RewriteRule ^jobs/job-(d .html?)$ %{REQUEST_URI}? [NC,L,R=301]
?
после $1
в target будет удалена любая строка запроса.
Комментарии:
1. извините, это не работает. Моя фактическая ссылка также не работает.
2. Какой полный URL вы использовали для тестирования этого и что именно не сработало? Можете ли вы опубликовать полный. htaccess под вопросом.
3. Например: у меня есть URL, подобный этому, example.com/jobs/job-1234.html . Иногда, если к URL добавлены некоторые параметры запроса, возвращается ошибка 404. Например: example.com/jobs/job-1234.html?test . Номер задания в URL является динамическим. Я хочу удалить параметр запроса из этого динамического URL.
4. Но вы упомянули это
I need to redirect to /jobs-***.html
. Вы просто хотите удалить строку запроса и перенаправить наexample.com/jobs/job-1234.html
Ответ №2:
Вы можете использовать следующее регулярное выражение:
^/jobs/job-(d ).html?S*$
(Это, по сути, фиксирует номер задания)
а затем заменить его на:
/jobs-$1.html
Комментарии:
1. Спасибо. Я попробовал следующее правило, RewriteRule ^/jobs/job-(d ).html ?.*$ /job/задание-$1.html [NC,L,R=301]. Но не работает.
2. Это не может сработать, поскольку строка запроса не соответствует в
RewriteRule
3. Не соответствует, как в? @anubhava
4.
RewriteRule
совпадения толькоREQUEST_URI
без строки запроса.