Htaccess - 301 redirection and WP SEO URLs don't work

I’ve already searched thoroughly for tutorials on how to configure .htaccess but I just can’t get it work properly no matter what I try. Hopefully you will be able to help me out, let me explain the current situation. There are already several 301 and other redirections in htaccess files, so let me simplify it and if it still won’t work, I’ll post full .htaccess files for a more detailed description.

Folder of old HTML website: public_html/old
Folder of new Wordpress based website (Site Address is set to www.domain.com): public_html/new

As of now, new Wordpress website works fine if one opens www.domain.com or www.domain.com/new. However, the old website is still accessible via www.domain.com/old, so I would like to redirect it to the new website. To put it in other words, I would like to permanently redirect absolutely everything from www.domain.com/old as well as subfolders to the new website.

Could anyone please write me down which rules should I use in .htaccess and in which folder should I put it?

The second problem is about new Wordpress website. Everything works fine except when I try to use SEO URL’s in http://domain.com/sample-post/ format. In that case www.domain.com will open fine, however I get the followiong 404 error for all subpages (e.g. www.domain.com/news etc.)

“Not Found
The requested URL /index.php was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.”

Here’s .htaccess from WP folder (public_html/new):

    RewriteEngine On
    DirectoryIndex index.php
    RewriteBase /new
    RewriteRule ^index\.php$ - [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /new/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /new/index.php [L]
    </IfModule>

# END WordPress

Thanks a lot for help!

Have you checked to ensure that mod_rewrite is enabled and working in the server’s Apache conf file?

In that file, you’ll be looking for something like:

<Directory />
    AllowOverride none
    Require all granted
</Directory>

And changing that “none” to “All”. Without some more specifics on your OS, Apache version, what your current apache conf looks like there… it’s hard to say though. In any case, it sounds like mod_rewrite is either not enabled, or is not working properly.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.