I've submitted personal files 'events.php' to my wordpress site (the wordpress is set up in my root directory).

I must create a mod_rewrite for this file to ensure that you can visit mydomain.com/occasions

I attempted simply doing something similar to this:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule %events$ events.php [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Which did not work.

I additionally found I possibly could add rewrite tags via wordpress having its built-in functions like so:

add_rewrite_rule('^events?','/events.php','top');

This did not work - I merely finish on my default 404 page as if its arrived at a non-existent page inside my wordpress.

What shall we be held missing here?

Correct me if I’m wrong, but when all that's necessary is perfect for somebody that would go to example.com/occasions to become forwarded to example.com/occasions.php, than you can easily perform a redirect like so.

Redirect 301 /occasions http://www.example.com/events.php

Try the next:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^events /events.php [L]
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

The directive you had looking for the URL wouldn't match:

RewriteRule %events$ events.php [L]

Also, the directive has become underneath the condition that inspections to have an existing file, to ensure that it never matches an immediate request occasions.php.