htaccess удалить? из URL и перенаправить

#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 без строки запроса.