URL Rewriting not working? - .htaccess

im new here.
Im trying to rewrite some urls on my site only for some reason no matter what I try I cannot get them to work!
My directory on my server has the following...
index.php
user-profile.php
.htaccess
On my index.php there is a number of users that all have a view more details button that links through to user-profiles and posts an ID using GET method as such...
http://mysite.com/user-profile.php?userID=2&firstName=Martin&lastName=FAM
However Id like to format them as so...
http://mysite.com/people/2/Martin/FAM
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /user-profile.php?userID=$1&firstName=$2&lastName=$3 [L]
Can anybody give me some reason as too why this isnt working?

The regex should be
^people/([^/]*)/([^/]*)/([^/]*)$

You need to make sure you have this option set in your document root directory in Apache's httpd.conf file:
AllowOverride All

Related

Set an index page for a specific folder in .htaccess

What I want to do should be quite simple: when the admin writes www.example.com/admin I want that he's addressed to www.example.com/admin/admin_index.php.
I wrote this rule and I checked on other posts here on Stackoverflow: it apparently seems to be correct, but it actually doesn't work.
RewriteEngine On
RewriteRule ^/admin/?$ /admin/admin_index.php [L,NC]
Has anyone any clue on why the redirect doesn't work, since it "stays" at www.example.com/admin outputting (obviously) the 403 error?
There is no need to use a rewrite rule. Just use DirectoryIndex directive in admin/.htaccess:
DirectoryIndex admin_index.php
This will load admin/admin_index.php when a request comes for http://domain.com/admin/

rewrite index.php?p=page to page

My urls currently look like this: http://www.morrisononline.com/index.php?p=contact
I would like to rewrite them to http://www.morrisononline.com/contact
The content for (in this case) contact comes from the directory /pages/ (www.morrisononline.com/pages/contact.php)
I have tried the following in the .htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9-_]+)/?$ index.php?p=$1 [NC,L]
I have also tried other combinations too (I'm not very good at this and trying lots of suggestions from other forum posts etc) but nothing has any effect. No error messages and no rewrites either. Did I do it wrong or could there be another command before that, that overrides this?
Do I have to refresh some cache or restart the server for this to work?
Make sure you have AllowOverride All or at least AllowOverride FileInfo in your site's config for the site's document root. And make sure the htaccess file is in the document root, is readable by everyone. If it's still not working, make sure that you've got AccessFileName set to .htaccess.

mod_rewrite and dynamic pages

I tried following a tutorial on the internet about mod_rewrite but it wasn't really for me. I created a .htaccess file that has the following code for now:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
From what I understand this is the basic setup of .htaccess to rewrite urls, followed by the instructions... what and how to change. I tried different exampled but it didn't worked for me. I have a dynamic page with the url localhost/alpha/oferta.php?id=52042156c65d4, where id="..." is the unique id of that offer. I want to change it to localhost/alpha/oferta/id=".."
Can you please show me an example of how can I achieve that? Also if you know any helpful tutorials let me know. Let me know before downrating so I can edit my question. Thanks!
So you want this kind or URL : localhost/alpha/oferta/id=123abc to be redirected to localhost/alpha/oferta.php?id=123abc.
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^alpha/oferta/id=([A-Za-z0-9]+)$ alpha/oferta.php?id=$1 [L]
Remember a few things :
this won't magically change "old" URLs into "new" ones. You must use rewritten ("new") URLs everywhere. Then your htaccess will change this readable URL into a technical one, which can be used by your code.
this redirection is transparent. If you want the URL to change into the browser bar, use [L,R=301] instead of [L].
this will only accept letters (case insensitive) and numbers for your id.
you can find a good cheat sheet about mod_rewrite here.

Friendly URL and remove php prefix

i have this in my htaccess
Options +MultiViews
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)$ dash.php?p=$1
RewriteRule ^([a-zA-Z0-9]+)/$ dash.php?p=$1
and im trying to make this url:
http://mywebdomain.com/dash.php?p=dash&mode=All
look like this:
http://mywebdomain.com/dash/All
Is there a way to do this?
and also if i had for example this:
http://mywebdomain.com/user/manage.php?p=manage&mode=Me
how could i get that to look like this:
http://mywebdomain.com/user/manage/Me
I have successfully managed to get the .php extension removed by the Options +Multiviews command but i am struggling trying to work out why it wont work for the re-write of the extended parts of the url.
Thanks for any help in advance too :)
Jonny
With MultiViews on, you do not need Rewrite to accomplish this.
since dash.php file exist in document root, Apache will pass requests to /dash/anything to dash.php, and that php script can parse the URI (found in $_SERVER["REQUEST_URI"]) to check what was the full uri called.
same goes for /user/manage.php ...

.htaccess rewrite url with parameter

I want to change my url with only the parameter. As I am passing only one parameter, so I want the sub url should be changed with my parameter name. I want change the url as the following type-
From:
http://www.xyz.com/cat.php?slag=season
to
http://www.xyz.com/season
Can anyone help me to do it. I don't know how to do it. Thanks
Options +FollowSymLinks
RewriteEngine On
RewriteBase /path/to/your/directory
RewriteRule ^(.*)cat/(.*)$ cat\.php?slag=$2&%{QUERY_STRING} [L]
put the above in your .htaccess file.. and that would do the magic..
Note :
RewriteBase /path/to/your/directory
(use this line only if your application is in any of subfolder the folder)
I suggest you obtain a copy of the .htaccess that WordPress uses. It's a quite powerful starting point that allows you to handle routing internally from within your Application - which you might feel more comfortable with, as it seems to me.

Resources