How to merge to .htaccess files - php

This is for 404 error pages:
ErrorDocument 404 /404.php
This is for url rewrite:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profile.php?username=$1
When i try to use them both it works but when i type in the url smth. like host/username it redirects to 404.php but this username exists.

you simply combine them together
i've tried it on index.php
and i got the index not 404 when i tried host/eli
ErrorDocument 404 /404.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /profile.php?username=$1
also you should do in profile.php
if(user_not_exists($_GET['username'])){
require_once '404.php'
}

Related

How to Redirect 404 page to custom error page?

Actually I am trying to redirect all the 404 page to 404.php using .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg|css|js|png)$ - [F]
#for 404 page
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . 404.php [L]
my file structure is like
structure
so what happens it works fine for the url like localhost/srmures/hr/fgh
errorpageone
But when I change url like localhost/srmures/hr/fgh/gdj then it doesn't recognize the css file and add the html file into it..
errorpagetwo
So how to solve this?

Error 404 script not working, if

My error404 script was working perfectly, but then I did this:
I had non-friendly URL's like this:
localhost/website/user.php?name=UserA
Then, I updated my .htaccess
#Options +FollowSymlinks
RewriteEngine On
RewriteRule ^([0-9A-Za-z-]+)/?$ user.php?name=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ErrorDocument 404 /website/error404.html
After this, my URL's are friendly URL like this: localhost/website/UserA
But, the error404 script do not work When the page is something like this: localhost/website/dsfdsfsfasfsfsfs
But if the page is something like this: localhost/website/SomeThingHere/sdfsfs
Use:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Z-]+)/?$ user.php?name=$1 [NC,L]
ErrorDocument 404 /website/error404.html
With RewriteCond before RewriteRule
But you rewrite /website/dsfdsfsfasfsfsfs to user.php?name=dsfdsfsfasfsfsfs
You need to change user.php to show 404 error when the user does not exist

Clean Url Error 404

Just wanted to customize Error 404 in my htaccess. The problem is when the user goes to Error 404 page. The URL is not clean compares to others. URL looks like these index.php?page=page-not-found .. How can I make it http://example.com/page-not-found.htm or http://example.com/page-not-found/ ??? By the way, have a look on my codes.
Options All -Indexes
RewriteEngine On
ErrorDocument 404 http://example.com/index.php?page=page-not-found
RewriteRule ^([^/]*)\.htm$ /website/index.php?page=$1 [L,QSA]
RewriteRule ^([^/]*)/lesson/([^/]*)\.htm$ /thesis/index.php?page=$1&lesson=$2
Any idea guys? By the way, thanks..
Remove http:// from your 404 directive to avoid server making a full redirect for 404:
Options All -Indexes
RewriteEngine On
ErrorDocument 404 /index.php?page=page-not-found
RewriteRule ^([^/.]+)\.htm$ /website/index.php?page=$1 [L,QSA]
RewriteRule ^([^/]+)/lesson/([^/.]+)\.htm$ /thesis/index.php?page=$1&lesson=$2 [L,QSA]
Please try this one.First remove your extensions from all files and try this one
ErrorDocument 404 /404.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^p/([0-9]+)$ /p.php?photo=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(Joe|Mao|Napoleon|Gandi)$ /profile.php?username=$1 [QSA,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ /$1.php [QSA,L]

htaccess two commands in the same file

Hi i have my htaccess with this:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.htm [L]
ErrorDocument 404 /404.htm
if i erase the first 4 lines, the other piece of code (which redirects de 404 page when there's a page not found) does not work anymore.
Any ideas?
I also want that when it redirects to 404.htm, it does not show on the url box, this url
http://www.mypage.com/404.htm
i want to show this
http://www.mypage.com/fail/search-by-the-user
for example.
Try following .htaccess
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ /$1.html
ErrorDocument 404 /404.html
NOTE: if you are working at localhost then please mention proper RewriteBase

mod_rewrite 404 and rewrite is not working

Greetings,
I cant get my htaccess mod_rewrite working as it should..
I have some basic RewriteRules for some static underpages, a redirect from the non www-version and now I would like to add a custom 404-page (called 404.php located in my webroot.
What happens is that when I try to access the underpage it only throws the 404-message back to me over and over again... Can anyone see any problems with this code?
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)$ /404.php [L]
RewriteCond %{HTTP_HOST} ^dhb\.nu$
RewriteRule (.*) http://www.dhb.nu/$1 [R=301,L]
RewriteRule ^policy/$ page.php?page_id=11
RewriteRule ^cookies/$ page.php?page_id=13
Thanks in advance!
Try using this:
ErrorDocument 404 /404.php
Read more here: http://www.garnetchaney.com/htaccess_tips_and_tricks.shtml
Instead of
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)$ /404.php [L]
you should really use the ErrorDocument directive:
ErrorDocument 404 /404.php

Categories