Permalink Issues by Installing WordPress in Subdirectory / Subfolder

I installed WP in subfolder /cms and it runs live without subfolder. When I use /%postname%/ as permalink I get 404 error on my site. My Server supported mod_rewrite.

My Code

wp-config.php

Read More
define('WP_SITEURL', 'http://www.sitename.de/cms');
define('WP_HOME', 'http://www.sitename.de');

root

1) .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cms/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /cms/index.php [L]
</IfModule>

2) index.php

<?php
define('WP_USE_THEMES', true);
require('./cms/wp-blog-header.php');
?>  

/cms

1) .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

2) index.php

<?php
define('WP_USE_THEMES', true);
require('./wp-blog-header.php');
?>  

Thanks for your help
Ogni

Related posts

Leave a Reply

4 comments

  1. What I generally do

    • Install WP in sub directory.
    • Open permalink set required permalink.
    • Open settings->general link
    • Remove the sub directory name from ‘Site Address (URL)’
    • Cut the index.php and .htaccess files from sub directory and paste them to root
    • change code in index.php as you did.
    • Again access settings->permalink save the form

    Done. You dont need index.php and .htaccess file in sub directory.

  2. I had similar issue and issue was not in code but was in httpd file

    1. Open the Apache configuration file located at/etc/httpd/conf/httpd.conf (or apache.conf for ubuntu)
    2. Change AllowOverride None to AllowOverride All inside the DocumentRoot Directory
      Directive, normally
  3. my solution to this problem, wich always works in my case;

    create a .htaccess file in the subdirectory and add the code wich is generated when you change the permalinks on the bottom of the page.

    example of the generated code;

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /kimco/
    RewriteRule ^index.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /kimco/index.php [L]
    </IfModule>
    
  4. Get rid of the .htaccess file under /cms and then visit Settings -> Permalinks to flush your rewrite rules. Also make sure the site URL and home URL are set up in the database correctly (like you have in the wp-config).