I have a wordpress site. Here is link to site. I want to redirect www.abc.com/?portfolios=letters to www.abc.com/?files=letters.
I tried editing in code, but din't worked.
Here is htaccess
Options +FollowSymLinks
RewriteEngine on
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^womackpi.com/?portfolio=(.+) womackpi.com/?files=$1 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
This should do:
RewriteRule ^abc.com/?portfolios=(.+) abc.com/?files=$1 [NC]
It works for me!
You will also need:
Options +FollowSymLinks
RewriteEngine on
Above the previous statement.
Query strings are not part of the URI that is used to match against the expression in RewriteRule..
Try replacing RewriteRule ^womackpi.com/?portfolio=(.+) womackpi.com/?files=$1 [NC] with:
RewriteCond %{HTTP_HOST} ^(www\.)?womackpi.com$ [NC]
RewriteCond %{QUERY_STRING} (^|&)portfolio=(.+)(&|$) [NC]
RewriteRule ^(.*)$ /$1?files=%2 [L]
Add an R inside the [L] brackets if you want to redirect the browser (changing the URL in the address bar).
Related
I have this example URL
www.something.com/order?_vacation=bahamas
The Value "Bahamas" can vary of course based on the location
I would like to redirect this URL
www.something.com/order
If anyone was typing it in the address bar without the parameter _vacation and it's value
Let's say - Redirect him to the homepage
www.something.com
Can anyone suggest how to do it using htaccess?
Thanks
Update here is my htaccess:
RewriteEngine On
RewriteCond %{QUERY_STRING} !(?:^|&)_vacation=[^&]+ [NC]
RewriteRule ^order/?$ /? [L,NC,R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /tripwith/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /tripwith/index.php [L]
</IfModule>
# END WordPress
You may use this rule as your topmost rule for this purpose:
RewriteEngine On
RewriteCond %{QUERY_STRING} !(?:^|&)_vacation=[^&]+ [NC]
RewriteRule ^order/?$ /? [L,NC,R=301]
I'm trying to have the following URL redirect to a new structure:
Before: http://example.com/profile/?name=some-one
After: http://example.com/profile/some-one/
The some-name will change depending on the user's account, so I want that part to be dynamic. This is what I have for my .htaccess
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^profile/$ /profile/$1/? [L,R=301]
According to this online htaccess tester, this would be the result:
http://example.com/profile//
Any help on clarifying why it's not carrying over the dynamic some-name? If it matters, this is for a WordPress site which already has the following:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Try
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^(.*)$ /profile/%2/? [R=301,L]
Use % for vars captured in RewriteCond's
I feel this should be an easy fix but I'm struggling to get it done right.
I have the URL:
http://www.testing.com/toursgbr/my-post
http://www.testing.com/toursgbr/my-post-2
I need to rewrite the URL to:
http://www.testing.com/tours/gbr/my-post
http://www.testing.com/tours/gbr/my-post-2
I got as far as the following:
RewriteRule ^toursgbr/(.*) /tours\/gbr/$1 [L]
This is what's currently in the htaccess file:
RewriteEngine on
ErrorDocument 404 http://www.ausweb.com.au/web-hosting
AddHandler server-parsed html
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
RewriteCond %{HTTP_HOST} ^seabreezepark\.com\.au$ [OR]
RewriteCond %{HTTP_HOST} ^www\.seabreezepark\.com\.au$
RewriteRule ^/?$ "http\:\/\/theseabreezepark\.com\.au\/" [R=301,L]
RewriteRule ^toursgbr/(.+)$ /tours/gbr/$1 [NC,L]
and got nowhere pretty fast. I just want to look for the word "toursgbr" and change it to "tours/gbr" in summary.
Put the Following code at root .htaccess file :
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} !\s/+tours/gbr/ [NC]
# the above line will exclude any request having tours/gbr/ from the follwoing rule.
RewriteRule ^toursgbr/(.*)$ tours/gbr/$1 [R=302,L,NE]
# the above line will change any requested url having toursgbr/ to be tours/gbr/ temporary
# and you can change it to permanent by changing [R=302,L,NE] to [R=301,L,NE]
# but check the code as it is first then change it
RewriteRule ^tours/gbr/(.*)$ toursgbr/$1 [L,NC]
# the above line will internally map any request having tours/gbr/ to its original path
Try :
RewriteRule ^toursgbr/(.+)$ /tours/gbr/$1 [NC,L]
Do not use the full url in rewrite target if you want to internally redirect /toursgbr/foo to /tours/gbr/foo without changing the url in browser.
Your corrected htaccess :
ErrorDocument 404 http://www.ausweb.com.au/web-hosting
AddHandler server-parsed html
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?seabreezepark\.com\.au$
RewriteRule ^/?$ http://theseabreezepark.com.au/ [L,R=301]
RewriteRule ^toursgbr/(.+)$ /tours/gbr/$1 [NC,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
First of all, I checked older questions on the topic but I can't get it to work still.
I basically want:
http://example.com/example/?test=3 to redirect to http://www.yahoo.com
I have:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /example/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /example/index.php [L]
RewriteCond %{QUERY_STRING} ^test=3$ [NC]
RewriteRule ^/example/index\.php$ http://www.yahoo.com [L,R=301]
</IfModule>
Ah yeah, I forgot that I already declared rewrite base. So, it should have been:
RewriteRule ^/index\.php$ instead of RewriteRule ^/example/index\.php$
Solved.
Put these lines just below your RewriteBase line:
RewriteCond %{QUERY_STRING} ^test=3$ [NC]
RewriteRule ^example/(index\.php|)$ http://www.yahoo.com? [L,R=301,NC]
And comment out your 2 lines below Wordpress rules.
Trying to set 301 redirect in .htaccess file and here is what i am trying to do
RewriteEngine On
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
RewriteRule (.*)$ http://www.mysite.com/wordpress/$1 [R=301,L]
I am testing this on my local machine using WAMPP server.Though when i hit http://localhost/wordpress/ i am getting redirected to http://www.mysite.com/wordpress/ but for other URL i am not getting redirected at all.for e.g
I have this URL in my local machine http://localhost/wordpress/2010/11/shadows/ and this at the server http://www.mysite.com/wordpress/2010/11/shadows/ but when i hit this URL i am not getting redirected to respected URL on the live server ,but i am being showed same page from local machine.
Working:
http://localhost/wordpress/
=> Redirected to:
http://www.mysite.com/wordpress/
Not working
http://localhost/wordpress/2010/11/shadows/
=> Redirected to:
http://www.mysite.com/wordpress/2010/11/shadows/
As clear from URL, I am trying to do this in Wordpress.
Here is complete .htaccess file
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress
RewriteEngine On
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
RewriteRule (.*)$ http://www.mysite.com/wordpress/$1 [R=301,L]
Can any one tell me whats wrong with the redirection entry? Thanks in advance
Update
I have even tried this option
Options +FollowSymLinks
RewriteEngine on
RewriteBase /wordpress/
RewriteRule ^(.*)$ http://www.mysite.com/wordpress/$1 [L,R=301]
Did not worked.
Always you first then the others (talking about RewriteRules only, man! :D ) (and you've forgotten the QSA directive).
So here's the "clean" version of your RewriteRule:
<IfModule mod_rewrite.c>
RewriteEngine On
# BEGIN My Own rewrite rules
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
RewriteRule (.*) http://www.mysite.com/wordpress/$1 [QSA,R=301,L]
# END My Own rewrite rules
# BEGIN WordPress
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
# END WordPress
</IfModule>
If it's in a .htaccess file then try without the / like this:
<IfModule mod_rewrite.c>
RewriteEngine On
# BEGIN My Own rewrite rules
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
# Without the / after wordpress:
RewriteRule (.*) http://www.mysite.com/wordpress$1 [QSA,R=301,L]
# END My Own rewrite rules
# BEGIN WordPress
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
# END WordPress
</IfModule>
By the way this is the first time in many years that a find an "under construction" page nice!
Please tell me if it works.
%{HTTP_HOST] will contain something like localhost or www.thecolorsofmysoul.com. So your conditions will never match.
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
and the redirecting to the external domain will never fire.
Also the first two rule act in consort to map any non-file/directory to index.php. http://localhost/wordpress/ has a regexp match string of "" so will fail the pattern "." and will fail through and will redirect with your "update". Try
Options +FollowSymLinks
RewriteEngine on
RewriteBase /wordpress/
RewriteCond %{HTTP_HOST} =localhost
RewriteRule ^.* http://www.thecolorsofmysoul.com/wordpress/$0 [L,R=301]
BTW with this base this should be in DOCROOT/.htaccess. The corresponding Wordpress rules (which shouldn't be above this redirect) are
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!index\.php$) index.php [L]
You don't need to repeat the base in the target and the negative lookahead assertion removes the need for the first index.php rule.