Jump to content

Install Processwire in a Subdirectory


Edison
 Share

Recommended Posts

Personally when I install a CMS I prefer to set it inside a subdirectory rather than the root folder. 

There are different reasons for this choice. For example you may wish to have different CMS installed in different subdirectories; or multiple copies or versions of Processwire in different subdirectories; keep separated directories for production and development; and so on. Sometimes this choice is taken also to obfuscate your CMS contents.

In this forum I found some helpful hints, but I could not find a turn-key tutorial explaining the detailed steps for redirection and how to hide subfolder in urls' segments.

It's pretty easy. Just let's do it step by step.

We are going to create a new .htaccess file in the root folder (please note it is a new one, we will leave the .htaccess file in Processwire subfolder unchanged), where we will add the section described below. Just replace yoursite.com and yoursubfolder with ... your ones!

# .htaccess in root directory
# Redirect to Processwire subdirectory
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?yoursite.com$
RewriteCond %{REQUEST_URI} !^/yoursubfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /yoursubfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?yoursite.com$
RewriteRule ^(/)?$ yoursubfolder/index.php [L]
</IfModule>

With this approach we can protect root files and subdirectories from redirection.

Are we done ? Yes and no. After these modifications pages are redirected correctly, but in the browser link you will note that subfolder's name is still showing. This is not good, we want to hide it.

We are just one step away. Let's open our site/config.php and add the following line at the end:

/**
 * Set urls root to hide Processwire folder
 * This must be combined with .htaccess in root directory
 */
$config->urls->root = '/';

Do not forget to lock site/config.php after modifying it.

If you prefer, instead of modifying config.php, you can place the above line in _init.php.

And here it is! I hope this simple tutorial can be of help.

  • Like 9
  • Thanks 2
Link to comment
Share on other sites

  • 2 years later...

Does your .htaccess code allow whatever is outside of the PW folder to exist without touching PW? I have a small site that’s already built and its static. I want visits to continue to those pages. But I’d like to use FormBuilder for questionnaires but I want those to live _just_ within the PW directory. I would install PW in a subdirectory of public_html.

This code seems to imply if it’s not a request to my PW subfolder, that the visits will continue on as if PW didn't exist?

RewriteCond %{REQUEST_URI} !^/yoursubfolder/

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...