Подтвердить что ты не робот

Переписывание URL-адресов в PHP без htaccess

Веб-сайт работает на веб-узле, где у нас нет доступа к файлу .htaccess. Тем не менее, я хочу переписать URL для удобных URL-адресов.

например. Исходный URL

www.example.com/file?q=name

ожидаемый URL

www.example.com/file/name
4b9b3361

Ответ 1

Как говорили другие люди, просто используйте ссылки типа /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"], $matches) ($ matches будет содержать все "части" URL-адреса в массиве)

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

Ответ 2

поскольку Аликс Аксель предложил использовать

www.example.com/index.php/file/name

то вы будете использовать $_SERVER['REQUEST_URI'] для обработки URL-адреса.

Ответ 3

Лучше всего будет иметь такие URL-адреса:

www.example.com/index.php/file/name

Однако вы должны переписать свой PHP-код.

Ответ 4

Если у вас есть сервер Apache и AcceptPathInfo, вы можете использовать URL, который вы написали. Затем запрос /file/name будет автоматически переписан на /file с значением PATH_INFO /name, если /file является обычным файлом.

Ответ 5

Попробуйте это

www.example.com/file?q=name

к

www.example.com/name (лучше, чем www.example.com/file/name)

Откройте .htaccess из корневой папки проекта и добавьте этот код

Options +FollowSymLinks

RewriteEngine On
RewriteRule \.(js|css|jpe?g|png|gif)$ - [L]


RewriteRule "^([ \w-]+)/?$" /file?q=$1 [L,QSA]

Это решает вашу проблему. См. Сообщение, как переписать URL-адрес в .htaccess