Чистые URL в PHP без mod_rewrite - PullRequest
2 голосов
/ 22 октября 2011

Я разрабатываю бэкэнд для сайта, созданного для клиента на PHP (которым я редко пользуюсь), который почти завершен. Я в первую очередь разработчик Rails, поэтому мне трудно не использовать какую-то некачественную версию установки CRUD, и я пытаюсь очистить URL.

Я бы хотел, чтобы мои URL были такими:

http://www.example.com/videos/name-of-video/

Я планирую просто взять последний бит URL-адреса из $_SERVER['PHP_SELF'] и выполнить поиск по БД, используя его, но я хотел бы бросить файл index.php в каталог http://www.example.com/videos/ и использовать его, когда я явно указываю кому-то на http://www.example.com/videos/name-of-video/,, если это имеет смысл.

Будет ли это работать как есть, если я помещу index.php в каталог / videos /, или что-то еще нужно? Можно ли обойтись без возни с htaccess?

Извините за мои жалкие объяснения. Я надеюсь, что это имеет смысл.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

Есть несколько вариантов сделать это без RewriteRule.Не без .htaccess сообщений.

Сначала вы можете назвать скрипт PHP без расширения, то есть video вместо video.php, а затем установить фактический тип файла с помощью ForceType или DefaultType.Так что интерпретатор PHP все равно его подберет.Путь будет отображаться в $_SERVER['PATH_INFO'

Аналогичным образом, включенный +MultiViews позволит PHP-сценарию не иметь расширения.

И, наконец, можно использовать обработчик ErrorDocumentнастоящего RewriteRule.Однако это приносит любое количество недостатков.

index.php сам по себе не будет подбирать случайные имена файлов в поддельном пути.Единственный вариант для этого - использовать URL-адреса, такие как http://www.example.com/videos/?name-of-video/

Так что нет.Нет хороших URL-адресов с имитацией каталогов без некоторой конфигурации.

2 голосов
/ 22 октября 2011

Насколько мне известно, эта манипуляция невозможна без прикосновения к .htaccess. когда вы пишете URL http://www.example.com/videos/name-of-video/, ваш сервер определенно будет искать файл index.php в папке name-of-video. которого не существует.

Если бы эта задача могла быть достигнута без .htaccess, то они бы никогда не использовались. И, кстати, почему вы не хотите использовать .htaccess .. ??

...