2016-10-03 3 views
0

Я работаю на сервере apache (2.2), и я пытаюсь перенаправить URL-адрес, основанный на URL-фильтрах. Например,Apache RedirectMatch

https://mywebsite.com/path/to/page?folder=folderDirectory/folderName 

будет перенаправлять:

https://mywebsite.com/static/contentUnavailable.html 

В моем httpd.conf файла я следующий код ..

RedirectMatch (.*)path/to/page?folder=folderDirectory/folderName /static/contentUnavailable.html 

перезапустить апачские каждый раз я вносить изменения к этому файлу, однако страница не перенаправляется. Что я делаю неправильно в RedirectMatch?

ответ

1

Вы не можете сопоставить строку запроса с перенаправлением, извините, вам нужно mod_rewrite для этого и использовать RewriteCond. Грубый пример:

RewriteCond %{QUERY_STRING} ^folder 
RewriteRule^/static/contentUnavailable.html [R,L,QSD] 

Это будет соответствовать строке запроса, который начинается с папкой (и продолжает с любым другим, независимо от того, что это такое). и перенаправлять все на нужное место назначения, отбрасывая строку запроса в процессе (флаг QSD).

В любом случае позвольте мне поблагодарить вас за то, что вы пытаетесь сначала перенести/перенаправить перенаправление (в то время как все остальные просто идут слепо для mod_rewrite даже для простейших переадресаций). Вы делаете все правильно.

+0

Благодарим за отзыв @ ezra-s! Я попробовал вышеуказанный код и кучу других вещей, но не повезло. Я также попытался поместить его в блок , но это также не сработало. Это должно быть в .htaccess вместо httpd.conf? Я пробовал оба места, но ничего не работает. – Samantha

+0

Это будет работать в любом контексте, но не нужно .htaccess, особенно если у вас есть доступ к основным файлам конфигурации. Придерживайтесь виртуального контекста как можно больше, это упростит ситуацию. Когда вы говорите «не работает», что происходит вместо этого? Постарайтесь быть настолько описательными, насколько это возможно, потому что вышеприведенные правила «работают» (я их тестировал), поэтому, возможно, что-то другое вмешивается (другие перезаписи или virtualhost и т. Д.) –

+0

Gotcha! Поэтому я просто попытался сопоставить URI, и он действительно забирает это в файле httpd.conf, и я перенаправлен. Например, если мой URL-адрес - https://example.com/path/to/page?folder=foo, и я редактирую строку запроса в соответствии с «path/to/page», она перенаправляет меня на/static/contentUnavailable. HTML. Однако, если я специально попытаюсь сопоставить «foo» для строки запроса, она не перенаправляет меня, она выводит меня на веб-страницу с этим конкретным содержимым папки - почти так, как будто это говорит о том, что ничто в URL-адресе не соответствует «foo». Я также пробовал другие веб-страницы, но запрос на фильтр не работает для меня. – Samantha

 Смежные вопросы

  • Нет связанных вопросов^_^