htaccess redirection hacked urls - .htaccess

Recently my website been hacked. In google console is showing urls like: "/Contact?k=63b17fbd214ae34c31b01864c58a701e&c=b-pandora-charm-june" and "/About?k=dacab93a777b7c305b172b9f4f945c58&c=meaning-pandora-elephant-charm"
I would like to redirect any url that contains "k" and "c" parameters to 404 or home page without executing these parameters.
Any help please
Regards

You can use:
RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)k=.*&c= [NC]
RewriteRule ^ /? [R=301,L]

Related

Redirect already SEO friendly URL to another SEO friendly URL externally using .htaccess

Part of my .htaccess code is as follows:
RewriteRule ^([A-Z]+)*$ nextlevels_state.php?state=$1 [L]
RewriteRule ^([A-Z]+)*/([0-9]+)$ nextlevels_state.php?state=$1&page=$2 [NC]
This basically redirects URL, example.com/XX to example.com/nextlevels_state.php?state=XX and example.com/XX/1 to example.com/nextlevels_state.php?state=XX&page=1 (internally).
Now, I would like to change the URL structure of the URL from example.com/XX to example.com/nextlevels/XX and example.com/XX/1 to example.com/nextlevels/XX/1
and I tried changing .htaccess to as follows:
RewriteRule ^nextlevels/([A-Z]+)*$ nextlevels_state.php?state=$1 [L]
RewriteRule ^nextlevels/([A-Z]+)*/([0-9]+)$ nextlevels_state.php?state=$1&page=$2 [NC]
However, as the site urls are already indexed in search engines, I would like to know a way to redirect all the traffic from example.com/XX to example.com/nextlevels/XX (externally) using .htaccess .
Please guide me in this regard. Thank you community :)
Could you please try following, written and tested with shown samples only(improving your already done attempts here). Please make sure to clear your browser cache before testing your URLs.
RewriteEngine ON
##Rule for redirect to url example.com/nextlevels/XX.
RewriteRule ^([A-Z]+)$ nextlevels/$1 [R=301]
RewriteRule ^nextlevels/([A-Z]+)/?$ nextlevels_state.php?state=$1 [NC,L]
##Rule for redirect to url example.com/nextlevels/XX/1.
RewriteRule ^([A-Z]+)*/([0-9]+)$ nextlevels/$1/$2 [R=301]
RewriteRule ^nextlevels/([A-Z]+)*/([0-9]+)$ nextlevels_state.php?state=$1&page=$2 [NC,L]

.htaccess redirect URL starts with /?/

Google Search Console is saying that a site we recently rebuilt has a bunch of 404s, which all start with /?/, for example, /?/AboutUs.
When I redirect like:
RewriteRule ^?/AboutUs$ /about [L,R=301]
I get internal server error.
I tried it with the query string answer, that didn't help either (the URL I want to direct is not a query, I don't believe).
All of my server errors are of this kind, so a solution would be great.
?/text is part of QueryString in your url. You can not match against querystring in RewriteRule's pattern. You need to use a RewriteCond
RewriteEngine on
RewriteCond %{QUERY_STRING} ^/aboutUs [NC]
RewriteRule ^ /about [L,R=301]

How can I redirect hits to a querystring URL via HTACCESS

I've created a website with a decent WordPress theme and framework about events but there's some links to a pretty annoying page like this:
/?event-category=gigs
I would like to redirect any links to URLs like that simply to:
/gigs
I'm hopeless in Htaccess, can someone suggest the syntax please? I'd appreciate it.
You can use this rule just below RewriteEngine On line:
RewriteCond %{QUERY_STRING} (^|&)event-category=(gigs) [NC]
RewriteRule ^ /%1? [R=302,L,NE]

htaccess retwrite subfolder to the maindomain

my domain name is www.hangings.com.au where as the project is hosted inside the folder named hangings so I need to enter something as www.hangings.com.au/hangings
Can anyone tell me how can I rewrite htaccess file so that it will show the content hosted in www.hangings.com.au/hangings when someone enters as www.hangings.com.au in their browser.
I tried something like the below
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.hangings.com.au/$1 [NC]
RewriteRule ^(.*)$ www.hangings.com.au/hangings$ [L,R=301]
but I am getting a browser error "This Website has a Redirection Loop"
The redirect loop is because of www.hangings.com.au/hangings matches also the condition.
If it's enough for you, that calls to www.hangings.com.au/ are redirected to the subfolder, an nor deeper structure, the following should be enough.
RewriteEngine on
RewriteRule ^/$ /hangings [R]

URL Rewriting for url with countrycode

I am writing a multi language website. Therefore I would like some help with a URL rewrite problem.
Case:
When someone visits www.example.com without adding a country code (nl, en, de) the htaccess redirects the visitor to www.example.com/nl/ i.g.
RewriteRule !(nl|en|de)(.*).* /nl/ [R=301,L]
The website is renewed and has got many url's directing to the website (google, forums). i.g. www.example.com/oldpage-nomore.html. What I would like is the following; the htaccess should detect that the request uri doesn't contain nl,en or de and should redirect to pagenotfound.php. RewriteRule ^(.*)\.html /public/oldurl?section=nl&notfound=$1$2&basehref=true&%1 [PT,L] the problem with this Rewrite rule is: all files ending in .html are being redirected.
What I am looking for is the following:
When someone visits www.example.com and no request uri is entered this should redirect to www.example.com/nl/
When there is a requested uri and this doens't contain a countrycode (nl|en|de) than redirect to pagenotfound.php
I tried the following but it doens't work:
RewriteCond %{REQUEST_URI} !^(nl|en|de)$
RewriteRule ^([a-z]{2})/(.*)\.html$ /pagenotfound.php?page=$2 [L,R=404]
I hope someone can help.
Thank you in advance.
Try to place this .htaccess file at the server root folder:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/?$
RewriteRule ^.*$ /nl/ [R]
RewriteCond %{REQUEST_URI} !^/(nl|en|de)
RewriteRule ^.*/(.*)\.html$ /pagenotfound.php?page=$2 [L,R=404]
(you probably made several mistakes, I tried to fix them)
I'm not sure with the first RewriteCond %{REQUEST_URI} regular expression - maybe remove the question mark or slash, I don't now... can't test now.

Resources