Как перенаправить / services на / services / onetime?

Через файл htaccess я пытаюсь перенаправить / services на / services / onetime , но он перенаправляет меня на / services / onetime / onetime / onetime / ...

В чем проблема с кодом и есть ли способ сделать это?

Это код, который я использовал:

redirect 301 /services/ /services/onetime/
0
задан 4 December 2016 в 06:54
2 ответа
 перенаправление 301 / services / / service / onetime /
 

(Предполагая, что это всего лишь опечатка в целевом URL?)

Директива mod_alias Redirect является префиксом сопоставления и добавляет все после совпадения в конец целевого URL. Таким образом, это также будет соответствовать перенаправленному URL-адресу / services / onetime / , а затем добавить все после соответствия (например, onetime / ) в конец / services / onetime / и т. Д. До тех пор, пока не будет достигнут предел перенаправления браузеров.

Вместо этого вам потребуется использовать директиву (mod_alias) RedirectMatch , которая использует регулярное выражение. Например:

RedirectMatch 301 ^/services/$ /services/onetime/

Этот только соответствует / services / и перенаправляет на / services / onetime / (включая завершающие косые черты).

Убедитесь, что вы очистили все промежуточные кеши перед тестированием, поскольку все предыдущие (ошибочные) перенаправления 301, вероятно, были кэшированы браузером.

Однако, если у вас есть существующие директивы mod_rewrite (например, RewriteRule ), тогда вы следует рассмотреть возможность использования mod_rewrite вместо этого перенаправления, чтобы избежать потенциальных конфликтов. Например:

RewriteRule ^services/$ /services/onetime/ [R=301,L]

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

2
ответ дан 4 December 2019 в 16:25

Это должно работать (если нет других правил):

RewriteEngine on
RewriteRule ^(.*)services /services/onetime [L,QSA]
-1
ответ дан 4 December 2019 в 16:25

Теги

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