Skip to content

moving flarum from sub directory to subdomain

Solved Configure
  • sir, i am trying to point subdomain to my existing directory i have updated config.php and cleared the cache my subdomain is still not connected any suggestions?

    pointed sub domain to my server IP using A name record

  • @phenomlab yes,

    created different app and moved files and DB now everything is working ✅

    thanks 🙂

  • @hari can you provide the nginx.conf file or the Flarum config file ?

  • @phenomlab apache

    .htacess

    <IfModule mod_rewrite.c>
      RewriteEngine on
    
       
      # Ensure the Authorization HTTP header is available to PHP
      RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
      # Uncomment the following lines if you are not using a `public` directory
      # to prevent sensitive resources from being exposed.
       RewriteRule /\.git / [F,L]
       RewriteRule ^composer\.(lock|json)$ / [F,L]
       RewriteRule ^config.php$ / [F,L]
       RewriteRule ^flarum$ / [F,L]
       RewriteRule ^storage/(.*)?$ / [F,L]
       RewriteRule ^vendor/(.*)?$ / [F,L]
    
      # Pass requests that don't refer directly to files in the filesystem to index.php
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^ index.php [QSA,L]
    </IfModule>
    
    # Disable directory listings
    Options -Indexes
    
    # MultiViews can mess up our rewriting scheme
    Options -MultiViews
    
    # The following directives are based on best practices from H5BP Apache Server Configs
    # https://github.com/h5bp/server-configs-apache
    
    # Expire rules for static content
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresDefault                                      "access plus 1 month"
      ExpiresByType text/css                              "access plus 1 year"
      ExpiresByType application/atom+xml                  "access plus 1 hour"
      ExpiresByType application/rdf+xml                   "access plus 1 hour"
      ExpiresByType application/rss+xml                   "access plus 1 hour"
      ExpiresByType application/json                      "access plus 0 seconds"
      ExpiresByType application/ld+json                   "access plus 0 seconds"
      ExpiresByType application/schema+json               "access plus 0 seconds"
      ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
      ExpiresByType application/vnd.api+json              "access plus 0 seconds"
      ExpiresByType application/xml                       "access plus 0 seconds"
      ExpiresByType text/calendar                         "access plus 0 seconds"
      ExpiresByType text/xml                              "access plus 0 seconds"
      ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
      ExpiresByType image/x-icon                          "access plus 1 week"
      ExpiresByType text/html                             "access plus 0 seconds"
      ExpiresByType application/javascript                "access plus 1 year"
      ExpiresByType application/x-javascript              "access plus 1 year"
      ExpiresByType text/javascript                       "access plus 1 year"
      ExpiresByType application/manifest+json             "access plus 1 week"
      ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
      ExpiresByType text/cache-manifest                   "access plus 0 seconds"
      ExpiresByType text/markdown                         "access plus 0 seconds"
      ExpiresByType audio/ogg                             "access plus 1 month"
      ExpiresByType image/bmp                             "access plus 1 month"
      ExpiresByType image/gif                             "access plus 1 month"
      ExpiresByType image/jpeg                            "access plus 1 month"
      ExpiresByType image/png                             "access plus 1 month"
      ExpiresByType image/svg+xml                         "access plus 1 month"
      ExpiresByType image/webp                            "access plus 1 month"
      ExpiresByType video/mp4                             "access plus 1 month"
      ExpiresByType video/ogg                             "access plus 1 month"
      ExpiresByType video/webm                            "access plus 1 month"
      ExpiresByType application/wasm                      "access plus 1 year"
      ExpiresByType font/collection                       "access plus 1 month"
      ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
      ExpiresByType font/eot                              "access plus 1 month"
      ExpiresByType font/opentype                         "access plus 1 month"
      ExpiresByType font/otf                              "access plus 1 month"
      ExpiresByType application/x-font-ttf                "access plus 1 month"
      ExpiresByType font/ttf                              "access plus 1 month"
      ExpiresByType application/font-woff                 "access plus 1 month"
      ExpiresByType application/x-font-woff               "access plus 1 month"
      ExpiresByType font/woff                             "access plus 1 month"
      ExpiresByType application/font-woff2                "access plus 1 month"
      ExpiresByType font/woff2                            "access plus 1 month"
      ExpiresByType text/x-cross-domain-policy            "access plus 1 week"
    </IfModule>
    
    # Gzip compression
    <IfModule mod_deflate.c>
      <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE "application/atom+xml" \
                                      "application/javascript" \
                                      "application/json" \
                                      "application/ld+json" \
                                      "application/manifest+json" \
                                      "application/rdf+xml" \
                                      "application/rss+xml" \
                                      "application/schema+json" \
                                      "application/vnd.geo+json" \
                                      "application/vnd.ms-fontobject" \
                                      "application/wasm" \
                                      "application/x-font-ttf" \
                                      "application/x-javascript" \
                                      "application/x-web-app-manifest+json" \
                                      "application/xhtml+xml" \
                                      "application/xml" \
                                      "font/collection" \
                                      "font/eot" \
                                      "font/opentype" \
                                      "font/otf" \
                                      "font/ttf" \
                                      "image/bmp" \
                                      "image/svg+xml" \
                                      "image/vnd.microsoft.icon" \
                                      "image/x-icon" \
                                      "text/cache-manifest" \
                                      "text/calendar" \
                                      "text/css" \
                                      "text/html" \
                                      "text/javascript" \
                                      "text/plain" \
                                      "text/markdown" \
                                      "text/vcard" \
                                      "text/vnd.rim.location.xloc" \
                                      "text/vtt" \
                                      "text/x-component" \
                                      "text/x-cross-domain-policy" \
                                      "text/xml"
        </IfModule>
    </IfModule>
    
    # Fix for https://httpoxy.org vulnerability
    <IfModule mod_headers.c>
      RequestHeader unset Proxy
    </IfModule>
    

    flarum is still loading in sub directory domain.com/ask

  • @hari is the .htaccess mixed in with the Apache config ? I see no directory directive

  • @phenomlab this is the .htacess file i found in ask folder

    there is nginx.conf file in ask directory

    # Pass requests that don't refer directly to files in the filesystem to index.php
    location / {
      try_files $uri $uri/ /index.php?$query_string;
    }
    
    # The following directives are based on best practices from H5BP Nginx Server Configs
    # https://github.com/h5bp/server-configs-nginx
    
    # Expire rules for static content
    location ~* \.(?:manifest|appcache|html?|xml|json)$ {
      add_header Cache-Control "max-age=0";
    }
    
    location ~* \.(?:rss|atom)$ {
      add_header Cache-Control "max-age=3600";
    }
    
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
      add_header Cache-Control "max-age=2592000";
      access_log off;
    }
    
    location ~* \.(?:css|js)$ {
      add_header Cache-Control "max-age=31536000";
      access_log off;
    }
    
    location ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ {
      add_header Cache-Control "max-age=2592000";
      access_log off;
    }
    
    # Gzip compression
    gzip on;
    gzip_comp_level 5;
    gzip_min_length 256;
    gzip_proxied any;
    gzip_vary on;
    gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rss+xml
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/opentype
        image/bmp
        image/svg+xml
        image/x-icon
        text/cache-manifest
        text/css
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy;
    

    my site.php is

    return Flarum\Foundation\Site::fromPaths([
    'base' => __DIR__,
    'public' => __DIR__,
    'storage' => __DIR__.'/storage',
    ]);
    

    updated config file

    <?php return array (
    'debug' => false,
    'database' => 
    array (
      'driver' => 'mysql',
      'host' => 'localhost',
      'port' => 3306,
      'database' => 'db',
      'username' => 'username',
      'password' => 'password',
      'charset' => 'utf8mb4',
      'collation' => 'utf8mb4_unicode_ci',
      'prefix' => '',
      'strict' => false,
      'engine' => 'InnoDB',
      'prefix_indexes' => true,
    ),
    'url' => 'https://ask.domain.com',
    'paths' => 
    array (
      'api' => 'api',
      'admin' => 'admin',
    ),
    );
    
  • @hari

    there is nginx.conf file in ask directory

    So are you using Apache or NGINX ?

  • @phenomlab idk i think i am using apache. how to check?

    3906164f-2b98-4124-b45d-e6b2db007fb2-image.png

  • @hari ok, what you have here is NGINX acting as a reverse proxy to Apache. This means you should make the changes in the Apache .htaccess file.

  • @phenomlab sir, what changes i need to make?

  • @phenomlab yes added thse lines

    <Directory "/public">
        AllowOverride All
    </Directory>
    
    <IfModule mod_rewrite.c>
      RewriteEngine on
    
       
      # Ensure the Authorization HTTP header is available to PHP
      RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
      # Uncomment the following lines if you are not using a `public` directory
      # to prevent sensitive resources from being exposed.
       RewriteRule /\.git / [F,L]
       RewriteRule ^composer\.(lock|json)$ / [F,L]
       RewriteRule ^config.php$ / [F,L]
       RewriteRule ^flarum$ / [F,L]
       RewriteRule ^storage/(.*)?$ / [F,L]
       RewriteRule ^vendor/(.*)?$ / [F,L]
    
      # Pass requests that don't refer directly to files in the filesystem to index.php
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^ index.php [QSA,L]
    </IfModule>
    
    <Directory "/public">
        AllowOverride All
    </Directory>
    
    # Disable directory listings
    Options -Indexes
    
    # MultiViews can mess up our rewriting scheme
    Options -MultiViews
    
    # The following directives are based on best practices from H5BP Apache Server Configs
    # https://github.com/h5bp/server-configs-apache
    
    # Expire rules for static content
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresDefault                                      "access plus 1 month"
      ExpiresByType text/css                              "access plus 1 year"
      ExpiresByType application/atom+xml                  "access plus 1 hour"
      ExpiresByType application/rdf+xml                   "access plus 1 hour"
      ExpiresByType application/rss+xml                   "access plus 1 hour"
      ExpiresByType application/json                      "access plus 0 seconds"
      ExpiresByType application/ld+json                   "access plus 0 seconds"
      ExpiresByType application/schema+json               "access plus 0 seconds"
      ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
      ExpiresByType application/vnd.api+json              "access plus 0 seconds"
      ExpiresByType application/xml                       "access plus 0 seconds"
      ExpiresByType text/calendar                         "access plus 0 seconds"
      ExpiresByType text/xml                              "access plus 0 seconds"
      ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
      ExpiresByType image/x-icon                          "access plus 1 week"
      ExpiresByType text/html                             "access plus 0 seconds"
      ExpiresByType application/javascript                "access plus 1 year"
      ExpiresByType application/x-javascript              "access plus 1 year"
      ExpiresByType text/javascript                       "access plus 1 year"
      ExpiresByType application/manifest+json             "access plus 1 week"
      ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
      ExpiresByType text/cache-manifest                   "access plus 0 seconds"
      ExpiresByType text/markdown                         "access plus 0 seconds"
      ExpiresByType audio/ogg                             "access plus 1 month"
      ExpiresByType image/bmp                             "access plus 1 month"
      ExpiresByType image/gif                             "access plus 1 month"
      ExpiresByType image/jpeg                            "access plus 1 month"
      ExpiresByType image/png                             "access plus 1 month"
      ExpiresByType image/svg+xml                         "access plus 1 month"
      ExpiresByType image/webp                            "access plus 1 month"
      ExpiresByType video/mp4                             "access plus 1 month"
      ExpiresByType video/ogg                             "access plus 1 month"
      ExpiresByType video/webm                            "access plus 1 month"
      ExpiresByType application/wasm                      "access plus 1 year"
      ExpiresByType font/collection                       "access plus 1 month"
      ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
      ExpiresByType font/eot                              "access plus 1 month"
      ExpiresByType font/opentype                         "access plus 1 month"
      ExpiresByType font/otf                              "access plus 1 month"
      ExpiresByType application/x-font-ttf                "access plus 1 month"
      ExpiresByType font/ttf                              "access plus 1 month"
      ExpiresByType application/font-woff                 "access plus 1 month"
      ExpiresByType application/x-font-woff               "access plus 1 month"
      ExpiresByType font/woff                             "access plus 1 month"
      ExpiresByType application/font-woff2                "access plus 1 month"
      ExpiresByType font/woff2                            "access plus 1 month"
      ExpiresByType text/x-cross-domain-policy            "access plus 1 week"
    </IfModule>
    
    # Gzip compression
    <IfModule mod_deflate.c>
      <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE "application/atom+xml" \
                                      "application/javascript" \
                                      "application/json" \
                                      "application/ld+json" \
                                      "application/manifest+json" \
                                      "application/rdf+xml" \
                                      "application/rss+xml" \
                                      "application/schema+json" \
                                      "application/vnd.geo+json" \
                                      "application/vnd.ms-fontobject" \
                                      "application/wasm" \
                                      "application/x-font-ttf" \
                                      "application/x-javascript" \
                                      "application/x-web-app-manifest+json" \
                                      "application/xhtml+xml" \
                                      "application/xml" \
                                      "font/collection" \
                                      "font/eot" \
                                      "font/opentype" \
                                      "font/otf" \
                                      "font/ttf" \
                                      "image/bmp" \
                                      "image/svg+xml" \
                                      "image/vnd.microsoft.icon" \
                                      "image/x-icon" \
                                      "text/cache-manifest" \
                                      "text/calendar" \
                                      "text/css" \
                                      "text/html" \
                                      "text/javascript" \
                                      "text/plain" \
                                      "text/markdown" \
                                      "text/vcard" \
                                      "text/vnd.rim.location.xloc" \
                                      "text/vtt" \
                                      "text/x-component" \
                                      "text/x-cross-domain-policy" \
                                      "text/xml"
        </IfModule>
    </IfModule>
    
    # Fix for https://httpoxy.org vulnerability
    <IfModule mod_headers.c>
      RequestHeader unset Proxy
    </IfModule>
    

    getting 500 error

  • @hari you need the full path to Flarum for it to work

    Screenshot_20220120-212332.jpg

  • @phenomlab i have tired both full path and path

    /home/master/applications/sadfsdaf/public_html/ask
    
    /home/master/applications/sadfsdaf/public_html/ask/public
    

    it is not working and redirecting to the main domain.

    sir, looks like you are somewhere outside i will wait till you come online/get free.

    should i need to edit htaccess of public_html or htaccess of ask folder?

  • @hari should be the ask folder. If you drop me a PM with the server details I’ll have a look at this tomorrow.

    EDIT: I noticed you’ve raised this on Flarum’s forums
    https://discuss.flarum.org/d/29900-how-to-configure-flarum-from-sub-directory-to-subdomain

  • @phenomlab yes,

    created different app and moved files and DB now everything is working ✅

    thanks 🙂

  • Hariundefined Hari has marked this topic as solved on

Did this solution help you?
Did you find the suggested solution useful? Why not buy me a coffee? It's a nice gesture, and a great way to show your appreciation 💗

  • 1 Votes
    2 Posts
    258 Views

    @Hari I think you’re referring to this

    https://sudonix.com/topic/170/creating-posts-from-rss-feeds-in-flarum

    However, this code was never designed to work with WordPress, but you could leverage the WP-CLI to do something similar without too much effort.

  • 6 Votes
    15 Posts
    861 Views

    @Hari said in Flarum SEO is worst and i still want to use it 😭:

    Flarum is coded in such a way where it tells spiders not to crawl any internal links by adding nofollow tag. How stupid this is

    Yes, I agree this doesn’t make any sense. If you compare to WordPress, then (via a plugin of course) you can set the attribute as you wish. It doesn’t make any sense to take a blanket approach. I guess I unerstand why they are doing this, but it’s not an optimum SEO methodology.

    @Hari said in Flarum SEO is worst and i still want to use it 😭:

    For few minutes i thought i should register a domain called flarumSEOsucks.com

    They’d probably sue you for using the Flarum name in a URL 😕

  • 0 Votes
    3 Posts
    260 Views

    See https://sudonix.com/topic/226/issues-getting-flarum-to-work-on-new-host/28?_=1645013723672

  • 52 Votes
    87 Posts
    7k Views

    @Hari Glad to see this went so well, and that you’ve finally departed the Flarum ecosystem 🙂

  • Flarum

    General
    4
    0 Votes
    4 Posts
    323 Views

    @jac said in Flarum:

    @phenomlab said in Flarum:

    @jac yes, but they are lacking severely in the sense that they still do not have a functional GDPR extension. In addition, Flarum uses PHP as it’s backend infrastructure meaning it’s going to be so much slower than NodeBB will ever be.

    Absolutely, I hope Node up their game 😆😉.

    Certainly plugin wise anyway 😉

  • Blomstra Realtime issues on ubuntu server

    Solved Linux
    26
    1 Votes
    26 Posts
    1k Views

    Just checked this thread on Discuss. It’s effectively not stable yet. My suggestion would be to use kyrne/websocket

  • CSS Help on my Flarum

    Solved Customisation
    5
    2 Votes
    5 Posts
    433 Views

    @mike-jones Yes, you’ll typically see this type of behaviour if there is another style that has higher priority in the sense that yours will be overridden. Using !important will override the higher preference, but should be used sparingly rather than everywhere.

  • 18 Votes
    36 Posts
    2k Views

    you are too fast 😉