user1448031
user1448031

Reputation: 2166

.htaccess internal redirect not working

I tried doing some .htaccess redirects for internal pages but they are not working for me. This is my .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

RewriteRule articles articles/how-to-play-piano [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>

I also tried this outside <IfModule> but not working:

Redirect 301 http://www.domain.com/articles http://www.domain.com/articles/how-to-play-piano

and

Redirect 301 /articles http://www.domain.com/articles/how-to-play-piano

Upvotes: 1

Views: 672

Answers (1)

anubhava
anubhava

Reputation: 785196

Your regex is wrong for articles rule and will cause infinite looping. To fix that you need to use anchors ^ and $:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

RewriteRule ^articles/?$ articles/how-to-play-piano [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]

Upvotes: 1

Related Questions