Regarding profile url shorten - url

I am wondering to know about this is it possible or not. If yes then please help me.
I want to change this URL:
http://domain.com/profile/admin
to
http://domain.com/admin
Where admin is username of profile user.
Why I am thinking it is impossible like the URL is already rewritten in .htaccess or somewhere.

You provide a little to less context to give a definitive answer but it must certainly be possible. It all depends on how you have setup your code and webserver now and in what degree you are allowed to modify any of them.

You can use below snippet in your .htaccess file -
<IfModule mod_rewrite.c>
RewriteEngine on
RedirectMatch 302 ^/$ /admin
RewriteRule ^/profile (.*) $1 [R=301,L]
</IfModule>
This snippet won't work if the URL- http://domain.com/profile/admin is auto-generated in between the application.

Related

Cleaning up URL's for an existing Website

Quick question, is there a way to clean up URl's for an existing website? I mean lets say I have a existing link like this http://www.webawwards.com/website?id=320 but I want to make it http://www.webawwards.com/terna
Is there a way I could clean up that url but also if there is any existing links to current URL that the link would still go through?
Could you please direct me the right way? Thank you
If you want to hard-code the URLs into your .htaccess file you can simply set up static redirects:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=320(.*)$
RewriteRule /website$ /terna [L,NC]
RewriteCond %{QUERY_STRING} ^id=321(.*)$
RewriteRule /website$ /somewhere-else [L,NC]
</IfModule>
However if you want to make it more flexible (maybe let people change their own redirects, or similar) you'd need to store it in a database (redirects table, columns of website_id, redirect_url) then when someone queries, do this (pseudo-code):
if (isset( queryString['id'] ))
query( SELECT redirect_url FROM redirects WHERE website_id = queryString['id'] )
redirectTo( redirect_url );
exit
In PHP, the actual redirect would be done with header('Location: ' . $redirect);, and the query part should be easy enough.

don't display .php extension in address bar(php)

First of all this method clearly working on github, for example pages showing done:
https://github.com/account
https://github.com/inbox
There is no .php extension at all + not needed ?page=account or ?page=inbox
In my opinion it's done via .htaccess.
Maybe someone knows how it should look in order to archieve same effect like github site ?
This can be achieved using mod_rewrite for apache
You put a .htaccess file in your document root and give it rules (Regular Expressions) to match the called URLs with
It looks similar to this:
RewriteEngine On
# rule to call MyPage.php if you call the URL http://yourdomain.com/MyPage
RewriteRule ^(.*)$ $1.php
# rule to add GET params
RewriteRule ^(.*)$ index.php?page=$1
There are several tutorials regarding mod_rewrite on the internet

A little bit help in url rewriting, please!

I have a short question about url rewriting...
I have a website. Let's say http://www.example.com/
with some subsites:
http://www.example.com/a.php
http://www.example.com/b.php
etc...
and some "special" urls like
http://www.example.com/c.php?i=1#link1
http://www.example.com/c.php?i=1#link2
http://www.example.com/c.php?i=2#link1
Now I would like to write a .htaccess file to convert current urls into rewritten urls like
http://www.example.com/a/
http://www.example.com/c/1/#link1
I'm not an expert in url rewriting, so could somebody please help me?
Best reagards.
RewriteRule ^a$ a.php [L]
RewriteRule ^c/(.*)/(.*) c.php?i=$1$2
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^a.php a/
RewriteRule ^b.php b/
Should work as far as your static pages go, you can not rewrite the hash because the hash is not sent to the server (as discussed here). If you need to rewrite the hash I would suggest changing the hash to another GET variable (eg u), in that case just add this to your htaccess: RewriteRule ^c.php?i=(.*)&u=(.*) c/$1/$2. If you simply intend to leave the anchor though, you can omit it from your rewrite and everything should be fine (...becuase the server never sees the hash/pound symbol), and in that case you should add this to your code RewriteRule ^c.php?i=(.*) c/$1/.

Mod_rewrite not working properly

I have this in my .htaccess file...
RewriteEngine on
RewriteRule ^/invite$ /invite.html
It's meant to let a user access this url:
http://mysite.com/invite
and display the invite.html page. I don't want to redirect the user, but just show them the invite.html page from a better looking URL.
When I browse to http://mysite.com/invite though, I get a 404 not found error.
Is there anything I'm doing wrong? I've tried looking at tutorials for using mod_rewrite but I seem to be doing what they're telling me too...
Thanks!
I don't think there should be a / in that RewriteRule:
RewriteEngine on
RewriteRule ^invite$ invite.html
Did you make sure that AllowOverride All is set for the directory where the .htaccess file lies? Else the file might be ignored.
If this isn't the case, you should check out Apache's log files for more hints (/var/log/apache on Linux).
You're missing a RewriteCond directive. That's the one that does the actual testing Condition to match a URL. The RewriteRule is invoked only when one or more RewriteConds are matched.

.htaccess RewriteRule so user views example.com/folder but is served example.com/f1/f2/f3/folder/index.php

I am trying to figure how to make a .htaccess RewriteRule so a visitor views example.com/folder
but is served
example.com/f1/f2/f3/folder/index.php
where f1/... is just an arbitrary line of folders.
I have kicked mod_rewrite a little, and got some really weird results, none I was going for though.
I'm not quite sure what you're trying to achieve. This, however, might solve your problem. Basically it translates any query for /folder, /folder/ or /folder/... to /f1/f2/f3/folder/...:
RewriteRule ^folder(/.*)?$ f1/f2/f3/folder$1
EDIT
If you don't care about anything after site.com/folder, this should suffice:
RewriteRule ^folder$ f1/f2/f3/folder/index.php
EDIT #2
Rewriting the root (according to comment by OP):
RewriteRule ^(.*)$ folder1/folder2/$1 [QSA]
There may be other (better?) ways to translate the root, though.
Docs are available on the QSA directive.

Resources