Ccna final exam - java, php, javascript, ios, cshap all in one. This is a collaboratively edited question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.
Friday, May 4, 2012
URL rewriting in PHP without htaccess
website is running on a web hosting where we don't have access on htaccess file. i want to do URL rewriting for user friendly URL. e.g. Original URL www.domain-name.com/file?q=name
As other people said, just use links like /index.php/nice/looking/url. The "index.php" in the middle of the URL might look a little strange, but I don't think it's possible to have it look better without .htaccess
Else, you could ask your hoster to redirect any URL to /index.php so that you can handle URL rewriting without having /index.php in your URL.
Then you can just use a regex match to detect what file to include. preg_match('@[/]{1}([a-zA-Z0-9]+)@', $_SERVER["PATH_INFO"], $matches) ($matches will contain all "parts" of the url in an array)
Be careful with including the files, use a whitelist so you're sure nobody would be able to load internal files.
If you have an Apache server and AcceptPathInfo is enabled, then you can use the URL you wrote. A request of /file/name will then be automatically rewritten to /file with the PATH_INFO value of /name if /file is a regular file.
As other people said, just use links like /index.php/nice/looking/url.
ReplyDeleteThe "index.php" in the middle of the URL might look a little strange, but I don't think it's possible to have it look better without .htaccess
Else, you could ask your hoster to redirect any URL to /index.php so that you can handle URL rewriting without having /index.php in your URL.
Then you can just use a regex match to detect what file to include.
preg_match('@[/]{1}([a-zA-Z0-9]+)@', $_SERVER["PATH_INFO"], $matches) ($matches will contain all "parts" of the url in an array)
Be careful with including the files, use a whitelist so you're sure nobody would be able to load internal files.
as Alix Axel suggested you can use
ReplyDeletewww.domain-name.com/index.php/file/name
then you will use $_SERVER['REQUEST_URI'] to process the url
If you have an Apache server and AcceptPathInfo is enabled, then you can use the URL you wrote. A request of /file/name will then be automatically rewritten to /file with the PATH_INFO value of /name if /file is a regular file.
ReplyDeleteYour best bet will be to have URLs such as this:
ReplyDeletewww.domain-name.com/index.php/file/name
You'll to rewrite your PHP code though.
You'd need to do something like the following:
ReplyDelete<?php
include('file/'.str_replace('/', '', $_GET['q']));
?>
Then you'd access http://example.com/script.php?q=name what would include http://example.com/file/name.