WordPress.org

Ready to get started?Download WordPress

Forums

301 Redirect Old Site Dynamic URLs To WordPress Permalinks (4 posts)

  1. thebiganswer
    Member
    Posted 3 years ago #

    Hi,

    Summary: Is there a way to use permalinks in .htaccess redirects instead of parameter-based URLs?

    Details:

    There is a post from a few weeks ago (see http://wordpress.org/support/topic/301-redirect-old-site-urls) which discussed redirecting from site A (old site) to site B (new WordPress powered site) using .htaccess 301 redirects. The solution was to redirect to the parameter-based URLs instead of their permalink URLs equivalents. While this solution works for me, I would like to know how to use the permalink structure, if only out of curiosity (not to mention the inconvenience of finding the ID # of every WordPress resource to redirect to).

    In the aforementioned previous post a mooted solution was, e.g., 'Redirect 301 /index.php?page=2 http://www.domain.co.uk/newpage/'. I've tried and failed using this method. Apache seems to completely ignore that line. Here is the .htaccess file used to test:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    Redirect 301 /index.php?page=mypage http://www.domain.co.uk/mypage/
    
    RewriteBase /blog/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /blog/index.php [L]
    </IfModule>

    In this case, the Redirect command is ignored and no redirect takes place.

    And so, is there a way to use permalinks in redirects?

    Thanks.

  2. NFWRo
    Member
    Posted 3 years ago #

    I am having the same issue and would be fascinated in the answer.

    Thanks

  3. frogsplash
    Member
    Posted 2 years ago #

    The trick with those dynamic URLs (the ones with &s and all that) is that htaccess code has to be written a little bit differently.

    In your example, if you want to redirect index.php?page=mypage to http://www.domain.co.uk/mypage/, you have to do it this way:

    RewriteCond %{QUERY_STRING} ^page=mypage$
    RewriteRule ^index\.php$ http://www.domain.co.uk/mypage/? [R=301,L]

    Basically, take everything you see after the index.php? and put it in the first line (don't forget that $). The new URL goes in the second (don't forget the ?)

    Important: be sure to put all this code before the WordPress permalink rewrites, or else it won't work.

    Good luck, hope that helps!

  4. thebiganswer
    Member
    Posted 2 years ago #

    @frogsplash

    Thank you for your solution. I recently returned to this issue and I'm now using something very similar to that which you've suggested.

    Regards

Topic Closed

This topic has been closed to new replies.

About this Topic