использование перенаправления htaccess приводит к некоторому странному поведению

0

Я использую htaccess для перенаправления 301 страницы

но он перенаправляет некоторые странности.

Чтобы быть уверенным, что это не было в моем коде, я просто поместил пустой файл index.php

но у меня были такие же результаты

когда я вызываю mywebsite.com/accueil.html, он перенаправляется на mywebsite.com/?p=accueil

это не то, что я ожидаю.

Я также удалил это 301 перенаправление, но он все еще перенаправляется на это.

ниже мой htaccess

Options +FollowSymLinks
RewriteEngine on

#Pages principale après index.php?p=ma-page
RewriteRule ^([^/]*)\.html$ index.php?p=$1 [L]

#Page de visualisation des chantiers 
RewriteRule ^chantier/([^/]*)/([^/]*)\.html$ index.php?

p=chantier&id=$1&titre=$2 [L]

#Page de demande de devis
RewriteRule demande-devis/([^/]*)/([^/]*)\.html$ index.php?

p=demande-devis&type=$1&categorie=$2 [L]

#Le permis de construire
RewriteRule permis-de-construire/([^/]*)/([^/]*)\.html$ index.php?

dossier=permis-de-construire&fichier=$1&p=$2 [L]

#Maisons en bois page générale
RewriteRule maisons-en-bois/([^/]*)\.html$ index.php?p=maisons-en-

bois&module=$1 [L]

#Détail maisons en bois
RewriteRule maisons-en-bois/voir-detail/([^/]*)/([^/]*)/([^/]

*)\.html$ index.php?p=maisons-en-bois&module=voir-

detail&categorie=$1&id=$2&name=$3 [L]

#Maisons en bois par categories
RewriteRule maisons-en-bois/nos_modeles/([^/]*)\.html$ index.php?

p=maisons-en-bois&module=nos_modeles&categorie_home=$1 [L]

#Demande de devis sans categorie
RewriteRule demande-devis/([^/]*)\.html$ index.php?p=demande-

devis&type=$1 [L]

#Articles du blog à lire
RewriteRule lire-article/([^/]*)/([^/]*)\.html$ index.php?p=lire-

article&id=$1&titre=$2 [L]


#404
ErrorDocument 404 /404.html


#301
Redirect 301 /home.html /accueil.html
Redirect 301 /default.html /accueil.html
Redirect 301 /index.html /accueil.html

anykind pf help будет высоко оценен.

Изменение: следующие функции, похоже, являются проблемой

function www() {
    $protocol = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
    if ($_SERVER['REQUEST_URI'] == '/' || empty($_SERVER['REQUEST_URI']) || is_null($_SERVER['REQUEST_URI'])) {
        if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {

            header('Location: ' . $protocol . 'www.' . $_SERVER['HTTP_HOST']);
            exit;
        }
    } else {
        if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {

            header('Location: ' . $protocol . 'www.' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
            exit;
        }
    }
}

function trail() {
    $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    if (substr($url, -1) == '/') {
        $url2 = rtrim($url, '/');
        header('location:' . $url2);
    }
}
Теги:
.htaccess
redirect
mod-rewrite

1 ответ

1
Лучший ответ

Вы сначала правило:

RewriteRule ^([^/]*)\.html$ index.php?p=$1 [L]

соответствует mywebsite.com/accueil.html которые переписываются на mywebsite.com/?p=accueil. Вы можете сделать что-то подобное, чтобы обойти это поведение:

Redirect 301 /home.html /accueil.html
Redirect 301 /default.html /accueil.html
Redirect 301 /index.html /accueil.html

# only rewrite if not accueil.html
RewriteCond %{REQUEST_URI} !accueil\.html
RewriteRule ^([^/]*)\.html$ index.php?p=$1 [L]
  • 0
    Я отредактировал свой htaccess, но когда вы заходите на sp-batiment.com/accueil.html, он все равно перенаправляет на неправильные страницы
  • 0
    Вы добавили RewriteCond как в примере выше (не проверено)?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню