Как я могу перенаправить неструктурированные ссылки, такие как (https://example.com/digital-marketing.php/ercbierubcrei), используя .htaccess? - PullRequest
0 голосов
/ 14 февраля 2020

Существует проблема неструктурированной ссылки, например (https://example.com/digital-marketing.php/ercbierubcrei)

Как мне перенаправить ее на главную root?

Мой .htaccess не работает Я использую приведенный ниже код в .htaccess: -

RewriteEngine On
ErrorDocument 404 /example.com

Ответы [ 4 ]

1 голос
/ 19 февраля 2020

Существует проблема неструктурированной ссылки, например (https://example.com/digital-marketing.php/ercbierubcrei)

Как я могу перенаправить ее на главную root?

Я предполагаю /digital-marketing.php это файл в вашей файловой системе В этом случае /ercbierubcrei - это дополнительная информация о пути (или path-info ). По умолчанию обработчик PHP разрешает информацию о пути, поэтому /digital-marketing.php все еще обслуживается, но по другому URL-адресу (если вы это подразумеваете под «неструктурированной ссылкой»?).

Вы можете просто отключить путь -инфо по этим URL-адресам, указав в верхней части файла .htaccess следующее:

AcceptPathInfo Off

Теперь любой URL-адрес, содержащий path-info, будет вызывать 404, а ваш пользовательский документ об ошибке 404 будет называется. (Вы можете переопределить это поведение с помощью mod_rewrite, если вы используете sh.)

В качестве альтернативы, если вы хотите перенаправить /digital-marketing.php/ercbierubcrei на /digital-marketing.php (это то, что вы подразумеваете под «перенаправить его на главную root»? * 1 ), затем вы можете сделать что-то вроде следующего в верхней части .htaccess файла, используя mod_rewrite:

RewriteEngine On
RewriteRule ^(.+?\.php)/ /$1 [R=302,L]

Это перенаправляет URL-адрес в форме от /<something>.php/<anything> до /<something.php, фактически отбрасывая часть URL-адреса с информацией о пути.

(* 1 - Если под "main root" вы в буквальном смысле подразумеваете документ root сайта, то это не рекомендуется. В любом случае Google, скорее всего, воспримет это как софт-404. В качестве предпочтительного варианта предпочтительным будет 404 со значимым сообщением. .)

ErrorDocument 404 /example.com

Это не выглядит "действительным". Второй аргумент директивы ErrorDocument в идеале должен быть локальным URL-путем к документу, который обрабатывает ответ об ошибке.

Например:

ErrorDocument 404 /error-documents/my-404-error-document.php
0 голосов
/ 14 февраля 2020

используйте полный URL вашего сайта. Вот так

ErrorDocument 404 https://www.yourdomain.com/example.php

0 голосов
/ 19 февраля 2020

См. Ниже .htaccess примеры:

Перенаправление http://yourdomain/digital-marketing.php/apple на http://yourdomain/:

RewriteEngine On
RewriteCond %{REQUEST_URI} /digital-marketing.php/*
RewriteRule ^ / [L,R=301]

Перенаправление http://yourdomain/digital-marketing.php/orange на http://yourdomain/ref?code=orange:

RewriteEngine On
RewriteCond %{REQUEST_URI} /digital-marketing.php/*
RewriteRule ^digital-marketing.php/(.*)$ /ref?code=$1 [L,R=301]
0 голосов
/ 14 февраля 2020

Простое перенаправление 301 сделает работу.

redirect 301 /old_url http://www.domainroot.com/
...