Без возможности доступа .htaccess я оказываюсь в творческом тупике. Для меня нет mod_rewriting. Тем не менее, я хочу иметь возможность делать такие приятные вещи, как:
http://www.example.com/Blog/2009/12/10/ http://www.example.com/Title_Of_This_Page
Каковы мои альтернативы?
Отвечая на ответы:
http://www.example.com/index.php/Blog/
– это известный метод, но я не предпочитаю его. Это показывает php, так сказать. Если у вас есть разрешения на установку настраиваемых документов ошибок для вашего сервера, вы можете использовать это для перенаправления 404 запросов.
Например, для Apache ( http://httpd.apache.org/docs/2.0/mod/core.html#errordocument )
ErrorDocument 404 /index.php
В index.php вы можете продолжить свой запрос, используя данные из массива $ _SERVER.
Вы также можете использовать URL-адреса
http://domain.com/index.php/Blog/Hello_World
из коробки с PHP5. Затем вы можете прочитать параметры URL, используя
echo $_SERVER['PATH_INFO'];
Не забудьте проверить / фильтровать PATH_INFO и все остальные переменные запроса перед их использованием в приложении.
Я знаю, что этот вопрос очень старый, но я не видел, чтобы кто-либо еще предлагал это возможное решение …
Вы можете приблизиться к тому, что хотите, просто добавив вопросительный знак после части домена URL, т. Е.
http://www.example.com/?Blog/2009/12/10/ http://www.example.com/?Title_Of_This_Page
Оба вышеупомянутых HTTP-запроса теперь будут обрабатываться одним и тем же PHP
скриптом;
www.example.com/index.php
и в скрипте index.php
$_SERVER['REQUEST_URI']
для двух страниц выше будет соответственно;
Blog/2009/12/10/
Title_Of_This_Page
поэтому вы можете справиться с ними, как хотите.
Простой способ:
.htaccess
$_SERVER
и посмотрите, соответствует ли он любому результату header()
и включите index.php Если вы опускаете конечную косую черту, Apache будет обслуживать первый файл [в алфавитном порядке], который соответствует этому имени, независимо от расширения, по крайней мере, на двух серверах, к которым у меня есть доступ.
Я не знаю, как вы могли бы использовать это для решения своей проблемы, но в какой-то момент это может быть полезно.
Например, если существуют http://www.somesite.com/abc.html
и http://www.somesite.com/abc.php
и http://www.somesite.com/abc
, http://www.somesite.com/abc.html
будет обслуживаться.
Единственный способ – использовать пользовательскую страницу 404. У вас нет возможности интерпретировать файлы без расширения с помощью интерпретатора PHP, не перенастраивая MIME-типы веб-сервера. Но вы говорите, что вы не можете редактировать даже .htaccess, так что другого пути нет.
Вы можете написать класс URI, который анализирует удобный URL-адрес, который вы определили.
Если опция MultiViews
включена или вы можете убедить кого-нибудь, кто имеет ключи для ее включения, вы можете сделать скрипт под названием Blog.php, который будет передан на example.com/Blog/foo
и получить '/ foo' в $_SERVER['PATH_INFO']
.