301 порядок приоритета перенаправления - PullRequest
1 голос
/ 29 июля 2011

Я хочу изменить расширение для всех страниц с HTML на PHP, когда я переделываю веб-сайт компании.Поэтому я добавляю эти строки в файл .htaccess.

RewriteEngine On 
RewriteRule ^/?(.*)\.html$ /$1.php [R=301,L]

Однако контакт и страницы были в папке на старом сайте, в которую я не хочу помещать их нановый сайт.Поэтому, если я помещу определенные перенаправления выше общего перенаправления «HTML-PHP», например:

redirect 301 /company-information/contact.html http://www.example.com/contact.php

RewriteEngine On 
RewriteRule ^/?(.*)\.html$ /$1.php [R=301,L]

Будет ли это перенаправлять страницу контактов, прежде чем она даже смотрит на общий редирект или всепройти через файл .htaccess и переопределить все, что было раньше в файле.

Или я получаю это полностью вокруг моей головы, и есть другой, гораздо лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 12 февраля 2016

Как упоминалось в комментарии @LazyOne, правила с более высоким приоритетом должны идти до правил с более низким приоритетом в .htaccess

0 голосов
/ 29 июля 2011

Во-первых, я не понимаю, почему вы хотите изменить суффикс имен файлов для клиентов.Лучше и популярнее просто удалить его.

Во-вторых, Директива Apache Redirect сообщает клиенту, что нужно извлечь ресурс из другого места, отправив заголовок HTTP Location.Это избыточный / бесполезный прием.

Лучше использовать правила переписывания, чтобы предоставить пользователю другой контент, попробуйте:

RewriteCond ${REQUEST_URI} =/company-information/contact.html
RewriteRule ^(.*)$ /contact.php [L]
...