Рейтинг:2

При изменении на WWW все URL-адреса, показывающие index.php?page=, как удалить index.php?page=?

флаг us

Недавно мне удалось перенаправить все URL-адреса с не-www на www, поскольку у меня была ошибка SEO в отношении дублирующихся веб-сайтов.

Как только я применил правила www, все мои URL-адреса начинают отображаться index.php?страница= что выглядит не красиво.

Вот мои текущие .htaccess правила:


RewriteEngine включен

Переписать Базу /

Правило перезаписи ^([-a-zA-Z0-9]+)$ index.php?page=$1

RewriteCond %{HTTP_HOST} !^www.example.com$
Правило перезаписи ^(.*)$ https://www.example.com/$1 [R=301,L]

RewriteEngine включен
Переписать Базу /

# Удаляет index.php?page=$1
RewriteCond %{THE_REQUEST} ^.*/index.php?page=$1
RewriteRule ^(.*)index.php?page=$1$ https://www.example.com/$1 [R=301,L]
RewriteRule ^(.*)index$ https://www.example.com/$1 [R=301,L]

Я пробовал код выше, и он не работал. Есть ли что-то, что мне не хватает?

Рейтинг:0
флаг kz

Ваши правила в неправильном порядке. Ваша внешняя переадресация без www на www должна быть до внутренней перезаписи, сразу после первой RewriteBase директива.

Как правило, «перенаправления» всегда должны идти перед «перезаписью».

ОБНОВИТЬ: Вам нужно будет убедиться, что вы очистили кеш браузера (и любые промежуточные кеши), поскольку ошибочное перенаправление 301 (постоянное) наверняка будет кэшировано браузером.

Таким образом, ваши правила должны выглядеть так:

RewriteEngine включен

Переписать Базу /

# Перенаправление без www на www
RewriteCond %{HTTP_HOST} !^www\.example\.com$
Правило перезаписи (.*) https://www.example.com/$1 [R=301,L]

# Внутренняя перезапись страниц
Правило перезаписи ^([-a-zA-Z0-9]+)$ index.php?page=$1 [L]

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

(NB: я предполагаю, что вы ссылаетесь на URL-адреса формы /это-моя-страница и нет /index.php?page=это-моя-страница - в противном случае вам нужно изменить свои внутренние ссылки.)

флаг us
Я только что организовал заказ, но мои ссылки все еще отображаются как: https://www.culture-insider.com/?page=ExperienceMorocco вместо https://www.culture-insider.com/ExperienceMorocco.
флаг kz
@SihamLahmine Вам необходимо убедиться, что вы очистили кеш браузера и все промежуточные кеши, поскольку ошибочное перенаправление 301 (постоянное) будет кэшировано. Вы также должны включить флаг `L` при перезаписи для полной меры. Я предполагаю, что вы также удалили последнюю пару правил?
флаг kz
@SihamLahmine Я обновил свой ответ, чтобы уточнить, как должны выглядеть директивы. Кроме того, я предполагаю, что вы ссылаетесь на URL-адреса формы `/this-is-my-page`, а не `/index.php?page=this-is-my-page`?
флаг us
Большое спасибо, это действительно ясно и легко проверить. Могу я спросить, как я узнаю, откуда мои URL-адреса связаны с правильным ответом на вопрос?
флаг us
MrWhite, я думаю, что благодаря вам я исправил это, я подожду до завтра, чтобы убедиться - огромное спасибо за вашу помощь!
флаг kz
@SihamLahmine «откуда мне знать, откуда связаны мои URL-адреса» - я имею в виду привязку HTML в вашем исходном коде - _ваши внутренние ссылки_. т.е. Ваши якоря должны быть для формы ``и не``.
флаг kz
@SihamLahmine «Думаю, я исправил это благодаря вам» - пожалуйста. Если это помогло ответить на ваш вопрос, отметьте его как принятый (отметьте галочкой под стрелками голосования рядом с моим ответом) - чтобы помочь другим читателям и удалить вопрос из очереди вопросов без ответа. Вы также можете голосовать за ответы, которые считаете полезными. Спасибо, очень признателен. :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.