Dmytro Evseev
Dmytro Evseev

Reputation: 11581

Redirect 301 in .htaccess causes 500 server error (Redirect to non-URL)

have such kind of error.

When adding Redirect 301 rule to .htaccess file like:

Redirect 301 "/page1.html" "/dir1/"

My site fails with 500 server error and in apache error log this error appears:

[Wed Mar 16 11:08:52 2011] [alert] [client 127.0.0.1] /home/htdocs/site.com/www/.htaccess: Redirect to non-URL

Mod rewrite is installed, also tried to provide urls without quotes.

On production server this .htaccess works fine, but on local causes troubles

Any ideas, please)


This rule works

Redirect 301 "/page1.html" "http://www.site.com/dir1/"

but I need a way to supply relative paths instead of full urls (production server works that way)

Upvotes: 8

Views: 20305

Answers (4)

ravina vala
ravina vala

Reputation: 129

Please try this, it's working as expected.

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  Redirect 301 /our_clients/nike /project/nike-nofyme-campaigns
 </IfModule>

Upvotes: 1

Maor Barazany
Maor Barazany

Reputation: 761

I had same issue, for me this didn't work as well:

RewriteRule ^/page1.html$ /dir1/page.html [R=301,L]

What worked for me is to remove the leading slash, and add soft tailing slash with ?, like this:

RewriteRule ^(page1.html)/?$ dir1/page.html [R=301,L]

Upvotes: 1

Dmytro Evseev
Dmytro Evseev

Reputation: 11581

Changed all Redirect 301 rules to:

RewriteRule ^/page1.html$ /dir1/page.html [R=301,L]

now working. But how does it work on production?

Upvotes: 8

ALWD
ALWD

Reputation: 21

For me, I had the exact same issue. Adding "http://domain.com" in front of "/mypage" worked; I am still testing to get it to work without, as is does on my production server. So my .htaccess on my local testing environment, went like this:

BROKEN: Redirect 301 /mypage /directory1/sub-directory/mypage/

FIXED: Redirect 301 http://mydomain.com/mypage http://mydomain.com/directory1/sub-directory/mypage/

Upvotes: 1

Related Questions