Как мне остановить несуществующие URL-адреса в файле? - PullRequest
1 голос
/ 02 февраля 2010

Я не знаю, является ли это Apache или PHP, но если вы перейдете к одному из:

mysite.com/about
mysite.com/about/

вместо ошибки 404 будет показан файл mysite.com/about.php, поскольку каталог не существует.

Я уверен, что это какая-то настройка, может быть, htaccess, есть идеи?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2010

Поскольку другие ответили, это может быть правило mod_rewrite; есть также директива под названием MultiViews, которая явно предназначена для включения описанных вами функций.

http://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews

Эффект MultiViews как следует: если сервер получает запросить / some / dir / foo, если / some / dir имеет MultiViews, и / some / dir / foo не существует, то сервер читает каталог в поисках файлы с именем foo. * и эффективно подделывает карту типов, которая называет все эти файлы, присваивая им одинаковые типы медиа и контент-кодировки это было бы, если бы клиент попросил один из них по имени. Затем выбирает лучший матч с клиентом требования.

Ищите

Options MultiViews

в вашем httpd.conf или в конфигурационном файле для конкретного виртуального хоста.

3 голосов
/ 02 февраля 2010

Конечно, это не стандартное поведение, поэтому сложно сказать. Если это происходило на стороне Apache, ищите последовательность инструкций по переписыванию соответствия; скорее всего, они начинаются с RewriteCond и заканчиваются RewriteRule.

Если вы не видите ничего подобного в вашей VirtualHost конфигурации или сайте .htaccess, это управляется любой используемой платформой PHP, и вам вместо этого нужно будет что-то настраивать.

0 голосов
/ 02 февраля 2010

с помощью этого .htaccess вы можете проанализировать, используя $ _SERVER [REQUEST_URI] на стороне PHP, полный URL-адрес и затем выполнить желаемое действие, это общий способ, вы должны учитывать контроль ошибок и перенаправление 404:

ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

и на стороне PHP, это должно быть index.php

$URLarray = explode('/', $_SERVER['REQUEST_URI']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...