Re-Routing Query String in PHP - php

I have a website that has many URLs that look like this:
https://www.website.com/view?id=56
https://www.website.com/category?name=music
Which I would like to look like this:
https://www.website.com/view/56
https://www.website.com/category/music
This website is deep into development and it is too late to switch to a framework that makes this simpler.
My question is: What is the simplest way to do this (again, without using Klien or Composer, or any other framework-type things)? Perhaps something in .htaccess or something along those lines.
Thanks!
Eric

You can enable mod_rewrite in your apache config and rewrite what you want with some rules.
Try this ones:
RewriteEngine on
RewriteRule ^view/([0-9-]+)/?$ view?id=$1 [NC]
RewriteRule ^category/([A-Za-z0-9-]+)/?$ category?name=$1 [NC]

Related

Multiple vanity URLs for different php files?

I am trying to build a site which has the following pages which needs vanity urls,
account.php
questions.php
profile.php
I need to display
www.mysite.com/account?req=settings
www.mysite.com/account?req=questions
www.mysite.com/account?req=answers
as following
www.mysite.com/account/settings
www.mysite.com/account/questions
www.mysite.com/account/answers
And for the other files I need the following,
etc:-
www.mysite.com/questions?id=0484684
As
www.mysite.com/questions/0484684
And
www.mysite.com/profile?id=123456
as
www.mysite.com/profile/123456
Would anyone help me because I really need to make this possible.
I would like to remove the .php extention from the url too.
I like to say that I have no experience in htaccess files.
Thanks for the help, it worked !!!
In your .htaccess file, add these rules:
RewriteEngine on
RewriteBase /
RewriteRule ^account/([^/\.]+)/?$ account.php?req=$1 [L,NC,QSA]
RewriteRule ^questions/([^/\.]+)/?$ questions.php?id=$1 [L,NC,QSA]
RewriteRule ^profile/([^/\.]+)/?$ profile.php?id=$1 [L,NC,QSA]
You should be able to add new rules based on how these work if you need them in the future.
You'll want to use a .htaccess file combined with PHP for complex manipulations like that, I wrote an article on re-writing URLs after asking a similar question on SO:
http://tomsbigbox.com/elegant-url-rewriting/

Making php handle get URI's like symfony

I am starting a project that is too small to use a framework for, but I would like to make the uri look like how symfony has them.
e.g.
example.net/directory/var/value/
instead of
example.net/directory?var=value
Thanks for any help.
the keyword you have to look for is: url rewrite
here is a simple example
make a file named .htaccess into your root
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^directory/([^/]+)/([^/]+) /directory.php?var=$1&value=$2 [NC]
and that happens:
http://domain.com/directory/AAA/123 => /directory.php?var=AAA&value=123
more over here: http://corz.org/serv/tricks/htaccess2.php

PHP .htaccess mod_rewrite

So I want to use mod_rewrite to transform:
random_name.com/main.php?user=$user
into
random_name.com/$user
(the $user is a php variable added onto the url, so it can be any name such as andy or rebecca, names like that)
and my code for the .htaccess is:
RewriteEngine on
RewriteRule ^/([A-Za-z0-9-]+)/?$ main.php?id=$1 [NC,L]
But this doesn't seem to work for some reason. I've read up on the tutorials but they're really complicated and it seems like this would do the trick, but it doesn't. I'll appreciate it if anyone who has experience with mod_rewrite would give me a few pointers.
You cannot use mod rewrite to transform random_name.com/main.php?user=$user into random_name.com/$user.
You have to do it manually in all the links on your site.
After that you may use mod rewrite for the reverse transformation, which will make /main.php?user=$user out of /user request
Try this:
RewriteEngine on
RewriteRule ^([A-Za-z0-9-]+)$ main.php?user=$1 [NC,L]

change php page url using htaccess

I want to change the url from
http://mywebsite/address.php?state=oh&office_id=1425
to
http://mywebsite/office/{variable inside my php page}.php
appreciate if you can help me
This should work:
RewriteEngine On
RewriteRule ^office/([0-9]+).php$ address.php?state=oh&office_id=$1
Which would result in:
http://expample.com/office/1425.php
Or if you'd like the state to be dynamic as well, you could do this:
RewriteEngine On
RewriteRule ^office/([a-zA-Z]+)/([0-9]+).php$ address.php?state=$1&office_id=$2
Which would result in:
http://expample.com/office/oh/1425.php
I would suggest to have a look at mod_rewrite Apache module.
You can do various URL manipulations with it.
http://httpd.apache.org/docs/current/mod/mod_rewrite.html
Beginner's guide:
http://www.workingwith.me.uk/articles/scripting/mod_rewrite

Custom URL with PHP

I have a small question to ask. Is it possible, via php or htaccess, to change a url like: miodominio.com/users.php?idu=x into something like miodominio.com/username ?
I want it to be Facebook style...Where "username" is the username chosen by idu = x.
There are multiple ways to solve this problem, but here's one that always suits my needs.
Guide all your URL requests through the index.php first and resolve the request in your PHP code second.
1) Use an .htaccess file to direct all URL's through index.php. You'll find one way here by the CodeIgniter framework and a more advanced explanation here. I recommend the CodeIgniter .htaccess guide first if you're inexperienced with .htaccess.
2) Second, use the $_SERVER variable in PHP to extract the URL. Probably with the help of the $_SERVER['REQUEST_URI'], you'll find '/username/' which you can then use to extract the user's data and serve it to them.
Good luck and beware of URL injections using this method.
You need to use apache's mod_rewrite for this. It can translate miodominio.com/username to miodominio.com/users.php?idu=x. There are some good guides about this which are easy to find with Google.
You can try to use this mod_rewrite pattern (add it to the .htaccess):
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ users.php?idu=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ users.php?idu=$1
you have to write a clean URL in your .htaccess file like :
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/$ users.php?idu=$1
Put the following in your .htaccess
RewriteEngine on
RewriteRule ^([a-z0-9_-]+)/?$ /users.php?idu=$1 [NC]
The [NC] will make it case-insensitive, if you accept only lowercase username, remove the [NC] from the last.

Categories