Источник страницы по-прежнему показывает исходное имя страницы после перезаписи HTACCESS и использует $ _SERVER [‘PHP_SELF’]

Я использую htaccess переписать, чтобы при нажатии изменить имя страницы с именем towns.php на связанную страницу города. Например, если щелкнуть ссылку Aliso Viejo, вы увидите:

Алисо-Вьехо-плиты просачиванию detection.php

Раздел переписывания моего htaccess выглядит следующим образом:

    RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
RewriteRule ^([a-z]+)-slab-leak-detection.php$ cities.php?city=$1&state=$2
RewriteRule ^([a-z-]+)-slab-leak-detection.php$ cities.php?city=$1&state=$2
RewriteRule ^(.*)\.html$ $1.php [L]
ErrorDocument 404 /index.php

Теперь перезапись работает как задумано. Проблема в канонической ссылке, которую я использую:

    $_SERVER['PHP_SELF']

повторить URL страницы для целей индексации. Вместо того, чтобы повторять переписанное имя страницы, оно повторяет оригинальное имя towns.php. Поисковые системы также индексируют предварительно переписанную страницу.

Я предполагаю, что у меня есть код в неправильном порядке или он не закодирован правильно, чтобы писать тихо, а не динамически.

Имейте в виду, что я довольно незнаком с продвинутым кодированием httaccess, и код, который я использовал, взят из измененной информации, которую я исследовал.

Любая помощь с благодарностью.

0

Решение

Я не думаю, что ценность $_SERVER['PHP_SELF'] На него влияет переписывание .htaccess, поскольку оно ссылается на файловую систему, а не на URL.

Если вам нужно сослаться на URL, используйте $_SERVER['REQUEST_URI']

РЕДАКТИРОВАТЬ

Просто нашел этот связанный вопрос / ответ: Может ли PHP получить доступ к имени файла .htaccess?. Комментарий Regilero по выбранному ответу дает хорошее представление о том, как избежать значения $_SERVER['REQUEST_URI'] перед выводом:

Помните, что вы должны экранировать $ _SERVER [‘REQUEST_URI’], прежде чем использовать его для создания содержимого HTML, избегайте использования пользователями HTML / js в URL. Проверьте stackoverflow.com/a/326331/550618 для получения подробной информации о SCRIPT_NAME vs REQUEST_URI

0

Другие решения

Других решений пока нет …