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💗

  • 3 Votes
    5 Posts
    62 Views

    @crazycells I know that Flarum has (or had) an extension that lists the users. That wasn’t even in the core - as basic as that is.

  • 3 Votes
    16 Posts
    46 Views

    @phenomlab
    Ah, got it working!
    I reversed the CSS addition to put z index high, and then I could see another error box saying fork title must be at least 3 characters.
    So made the new fork title longer and button responded.

  • installing flarum with plesk

    Solved Configure
    78
    26 Votes
    78 Posts
    887 Views

    @phenomlab thanks a lot, have a nice day 🙂

  • 14 Votes
    65 Posts
    783 Views

    @crazycells huh. Thanks. Will need to check that as well.

  • 0 Votes
    1 Posts
    458 Views

    posttorss.webp

    One of the things that one of my projects has been doing successfully for a few months is querying RSS feeds, then using the Flarum API to create discussions as posts

    Want this ? Sure you do ! Below are the steps, including all scripts etc to make this work

    Firstly, you will need the flarum api client from here

    Installation

    composer require maicol07/flarum-api-client

    Configuration

    In order to start working with the client you might need a Flarum master key:

    Generate a 40 character random, hard to guess string - this is the Token needed for this package (you can use a generator for this - a good example is here) Manually add it to the api_keys table using phpmyadmin/adminer or another solution.

    The master key is required to access non-public discussions and running actions otherwise reserved for Flarum administrators.

    Install SimplePie

    Next, install SimplePie to parse the RSS feeds

    composer require simplepie/simplepie

    Create storage DB

    Now access your database using phpmyadmin (or something similar) and create a new database called “feed”

    With the database created, run the following script which will create a table called “queue” with a few simple columns

    CREATE TABLE `queue` ( `id` bigint(20) NOT NULL, `url` varchar(500) NOT NULL, `title` varchar(500) NOT NULL, `seen` int(1) NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    As your “feed” database gets bigger, it’ll need some form of index to make it simpler and faster to search. Create as follows in phpmyadmin

    ALTER TABLE `queue` ADD PRIMARY KEY (`id`), ADD KEY `title` (`title`), ADD KEY `url` (`url`);

    Finally, we’ll set an AUTO INCREMENT on the ID field of the table

    ALTER TABLE `queue` MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; COMMIT; Create credentials file

    For security reasons, we “include” a details.php file (you can call this whatever you like - just remember to reflect any change of name in the below main script) outside of the web root. We are going to be running this from PHP-CLI anyway, so it shouldn’t be exposed

    details.php in my case is being included like the below - it’s located at the root of my domain, but outside of the web root

    include("/var/www/vhosts/metabullet.com/details.php");

    Your details.php file should contain this

    <?php // Variables for posting to Twitter define('CONSUMER_KEY', 'YOUR_KEY'); define('CONSUMER_SECRET', 'YOUR_SECRET'); define('ACCESS_TOKEN', 'YOUR_ACCESS_TOKEN'); define('ACCESS_TOKEN_SECRET', 'YOUR_ACCESS_TOKEN_SECRET); $header = array( "Authorization: Token THE_TOKEN_YOU_GENERATED_EARLIER", "Content-Type: application/json", ); // Create DB connection $servername = "localhost"; $login = "YOUR_DB_USER"; $dbpw = "YOUR_DB_PASSWORD"; $dbname = "feed"; $conn = new mysqli($servername, $login, $dbpw, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } else { echo "Connected to database\n"; } ?> Create the RSS parser script

    Create a new PHP file called rssparser.php - again, located outside of the web root

    <?php //use Abraham\TwitterOAuth\TwitterOAuth; @$url = $argv[1]; @$max = $argv[2]; if (!$url) { die("\n ***** You must provide a URL to process *****\n"); } if (!$max) { die("\n ***** You must provide a quantity to process *****\n"); } include "details.php"; require 'vendor/autoload.php'; $feed = new SimplePie(); $feed->enable_cache(); $feed->set_cache_location("/home/phenomlab/system/.cache"); $feed->force_feed(); $feed->set_timeout(30); $feed->set_feed_url("$url"); $feed->init(); $feed->handle_content_type(); $feed->enable_order_by_date(true); $number = $feed->get_item_quantity($max); foreach ($feed->get_items(0, $number) as $items) { echo "\033[32m\nProcessing story | " . $items->get_title() . "\n\033[0m"; $description = str_replace("View Entire Post &rsaquo;", "", $items->get_description()); $description = str_replace("<img", "\n\n<img", $items->get_description()); $description = str_replace('<img src="', '', $items->get_description()); $description = str_replace('" />', '', $items->get_description()); $description = strip_tags(html_entity_decode($items->get_description()), "<img>") . "\n"; $description .= "\n" . '[Link to original article](' . $items->get_link() . ')' . "\n\n"; //echo 'Description: ' . $description . "\n"; $content = $items->get_content(true); //echo '[Link to original article](' .$item->get_link() . ')'."\n"; // Define variables for use later on in the script $subject = $items->get_title(); $body = trim($description); $link = $items->get_link(); // Query the database for each item. Perform action based on results $stmt = $conn->prepare('SELECT url, seen FROM queue WHERE url = ?'); $stmt->bind_param('s', $link); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($checklink, $seen); $stmt->fetch(); // Test to see if we have processed these before. If we have, skip them to avoid duplicates if (!$checklink || !$seen) { echo "Checking " . $link . " \nLine item does not exist - \033[32m[Processing]\n\033[0m "; // Processing new items. Insert record into database to prevent duplication on subsequent processing runs $seen = 1; $stmt = $conn->prepare('INSERT INTO queue (url, title, seen) VALUES(?, ?, ?)'); $stmt->bind_param("ssi", $link, $subject, $seen); $stmt->execute(); // Process each newly identified unique post into Flarum using the API $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://hub.phenomlab.net/api/discussions'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, 22); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode((array( 'data' => array( 'type' => "discussions", 'attributes' => array( 'title' => "$subject", 'content' => "$body", ), 'relationships' => array( 'tags' => array( 'data' => array( array( 'type' => 'tags', 'id' => "23", ), ), ), ), ), )))); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec($ch); echo $result; //$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); //$status = $subject . ' ' . $link . ' #infosec #security #technology #phenomlab'; //$post_tweets = $connection->post("statuses/update", ["status" => $status]); } // Item has already been processed. Continue loop until count exhausted else { echo "Checking " . $checklink . "\nLine item already processed - \033[33m[Ignored]\n\033[0m"; } } Important notes

    @$max = $argv[2]; is the number of RSS items that the script will parse for each resource URL

    curl_setopt($ch, CURLOPT_POST, 22); - “22” in this case is the ID of the user I want to post as. This user needs admin rights.

    array( 'type' => 'tags', 'id' => "23" )

    This array tells the Flarum API in which tag to post. In this case, “23” is the ID of the “news” tag.

    Test it !

    To test your script to ensure it’s working, run from the CLI and the working directory of where your files are located. Note, that the RSS URL will need to change to the one you’re interested in targeting, and the number afterwards is the amount of articles you want to pull at once.

    php rssparser.php http://feeds.bbci.co.uk/news/rss.xml 10

    Watch for the output on the screen. The first time this is run, the script will create posts for all new RSS feeds it has no reference for. Whilst each post item is created, the “feed” database is populated so that subsequent runs are not duplicated.

    Now what ?

    I have this rssparser.php scheduled to run every hour.

    Enjoy - let me know if you have any issues getting this to work.

  • 4 Votes
    6 Posts
    268 Views
  • CSS Help on my Flarum

    Solved Customisation
    5
    2 Votes
    5 Posts
    283 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.