Как написать красивые URL без файла htaccess в php

Красивые URL без htaccess

Я хочу написать красивый URL, как:
http://yousite.com/member/1/ вместо http://yousite.com/index.php?page=member&id=1
Но я сделал это с файлом htaccess, и теперь я хочу сделать это без файла htaccess, потому что иногда у вас нет прав на редактирование файла htaccess на сервере.

3 ответа

Если у вас есть сервер Apache и включен AcceptPathInfo, вы можете просто использовать ссылки, такие как /index.php/nice/looking/url. "Index.php" в середине URL-адреса может выглядеть немного странно, но я не думаю, что возможно, чтобы он выглядел лучше без.htaccess

В противном случае вы можете попросить своего хостера перенаправить любой URL-адрес в /index.php, чтобы можно было перезаписывать URL-адрес, не добавляя /index.php в свой URL-адрес.

Затем вы можете просто использовать регулярное выражение, чтобы определить, какой файл включить. preg_match('@[/]{1}([a-zA-Z0-9]+)@', $_SERVER["PATH_INFO"], $ соответствия) ($ соответствия будет содержать все "части" URL-адреса в массив)

Будьте осторожны с включением файлов, используйте белый список, чтобы быть уверенным, что никто не сможет загрузить внутренние файлы.

Я мог бы иметь эту единственную строку кода внутри index.php страница, если я не хочу использовать .htaccess,

Псевдокод: получить идентификатор и перенаправить пользователя

Краткое объяснение: укажите идентификатор, который вы получили в URL, и перенаправьте его в нужное место с этим идентификатором.

Реальный код

header('Location: http://yousite.com/member/'.$_GET['id'].'/');

На самом деле вы можете динамически создавать новую папку для каждого участника с простым индексным файлом внутри, который включает ваш фронт-контроллер, но даже если это возможно, вы, вероятно, не хотите этого делать, а вместо этого хотите сменить свой хост.

Другие вопросы по тегам