Website is running on a web host where we don\'t have access to a .htaccess
file. However, I want to do URL rewriting for user friendly URLs.
e.g. Origi
as Alix Axel suggested you can use
www.example.com/index.php/file/name
then you will use $_SERVER['REQUEST_URI']
to process the URL.
Your best bet will be to have URLs such as this:
www.example.com/index.php/file/name
You'll to rewrite your PHP code though.
Try this
www.example.com/file?q=name
to
www.example.com/name
(better than www.example.com/file/name
)
Open your .htaccess
from your project root folder and add this code
Options +FollowSymLinks
RewriteEngine On
RewriteRule \.(js|css|jpe?g|png|gif)$ - [L]
RewriteRule "^([ \w-]+)/?$" /file?q=$1 [L,QSA]
This solves your problem. See the post how to rewrite URL in .htaccess
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.