У меня есть URL www.something.com/HereWeGo, я хочу получить HereWeGo без ошибки 404 - PullRequest
2 голосов
/ 06 апреля 2010

Рассмотрим URL www.something.com/HereWeGo. Когда кто-то вводит URL, сайт показывает ошибку 404, так как каталог не существует. Я могу разобрать URL-адрес, чтобы получить запрос и HereWeGo, но не могу помешать ему перейти к ошибке 404.

Как мне добиться этого с помощью PHP, если можно избежать .htaccess сейчас

Спасибо Jean

Ответы [ 8 ]

4 голосов
/ 06 апреля 2010

Вам нужно будет переписать ваши URL, чтобы /something указывал на index.php?q=/something, дело в том, что ваш веб-сервер обычно выдает 404 по умолчанию, если файл / каталог не может быть найден и с ним не связано RewriteRules , даже если вы можете разобрать URL со страницы ошибки и найти нужную информацию.

Есть ли веская причина, по которой вы не можете использовать .htaccess? Я настоятельно рекомендую вам использовать его, если вы можете. Не в последнюю очередь потому, что сейчас 404 означает, что Google не будет индексировать вашу страницу.

Эта статья поможет вам.

2 голосов
/ 06 апреля 2010

Вы просто не можете избежать "прикосновения" к .htaccess, по крайней мере для перезаписи всех запросов в один файл (или определения файла 404 по умолчанию). Вы используете Apache, а не PHP для сервера, верно?

Например, для Kohana 3 Framework (и большинства других платформ) все запросы переписываются в файл index.php, который затем обрабатывает маршруты для запроса.

RewriteRule .* index.php [L]

Код ниже будет обрабатывать все, что отвечает с 404 и перенаправить его.

ErrorDocument 404 /somefile.php

В файле somefile.php вы можете проверить, является ли referer «локальным» ($ _SERVER ['HTTP_REFERER']) и какой строкой запроса он был, отвечая тем, что вы хотите.

1 голос
/ 06 апреля 2010

это то, что вам нужно настроить на веб-сервере, в файле .htaccess.Посмотрите на синтаксис для redirect или rewrite.Это невозможно сделать только на PHP, поскольку именно веб-сервер обрабатывает запрос URL.

1 голос
/ 06 апреля 2010

Вы можете использовать mod_rewrite для этой конкретной папки, или вы можете использовать свою собственную страницу 404 (читайте эту статью ).

0 голосов
/ 01 июня 2010

На странице назначения просто позвоните -

header('HTTP/1.0 200 OK');

- переопределить код состояния по умолчанию 404.

0 голосов
/ 06 апреля 2010

Вам нужно установить php-файл, такой как 404.php, в качестве файла обработчика ошибок 404. После этого создайте код в 404.php, который выглядит примерно так:

if (stristr($_SERVER["REQUEST URI"],"HereWeGo")
{
//add handling code here
}
0 голосов
/ 06 апреля 2010

Вы не сможете избежать перенаправления .htaccess, если не измените конфигурацию apache (или других веб-серверов), чтобы перенаправить ошибки 404 в собственный файл * .php вместо сообщения об ошибке по умолчанию.

0 голосов
/ 06 апреля 2010

IIRC, настройка пользовательских 404 (и других ошибок веб-сервера) являются частью среды вашего веб-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...