New installation of Mautic redirects to File Not Found - 404

We’ve recently installed Mautic on Ubuntu 16 at the location



/var/www/html/website.com/subdomains/mautic/httpdocs



We successfully went through the default Mautic installation procedure.



Now when we try to access



mautic.website.com we are redirected to mautic.website.com/s/dashboard, and, we get a File Not Found 404 error.



However, when I manually input ‘index.php’ into the url, mautic.website.com/index.php/s/dashboard, everything works perfectly. In fact, navigating around within the Mautic app, all links contain index.php. It’s not until we log out again that there is a problem.



What could be causing this? We’re using Apache2, 2.4.18 to be exact, and mod_rewrite is working fine, Require all granted is configured for the root directory for mautic, and I have not altered .htaccess at all from it’s default. (below is the .htaccess file contents as setup by the installation process)



What could be causing this issue and how do I fix it?



Thanks! Please let me know any other information you need that may be helpful!

Code:
# Use the front controller as index file. It serves as a fallback solution when # every other rewrite/redirect fails (e.g. in an aliased environment without # mod_rewrite). Additionally, this reduces the matching process for the # start page (path "/") because otherwise Apache will apply the rewriting rules # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). # DirectoryIndex index.php RewriteEngine On
# Set Authorization header for OAuth1a for when php is running under fcgi
RewriteCond %{HTTP:Authorization} .+
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Determine the RewriteBase automatically and set it as environment variable.
# If you are using Apache aliases to do mass virtual hosting or installed the
# project in a subdirectory, the base path will be prepended to allow proper
# resolution of the app.php file and to redirect to the correct URI. It will
# work in environments without path prefix as well, providing a safe, one-size
# fits all solution. But as you do not need it in this case, you can comment
# the following 2 lines to eliminate the overhead.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::2$
RewriteRule ^(.*) - [E=BASE:%1]

# Redirect to URI without front controller to prevent duplicate content
# (with and without `/app.php`). Only do this redirect on the initial
# rewrite by Apache and not on subsequent cycles. Otherwise we would get an
# endless redirect loop (request -> rewrite to front controller ->
# redirect -> request -> ...).
# So in case you get a "too many redirects" error or you always get redirected
# to the start page because your Apache does not expose the REDIRECT_STATUS
# environment variable, you have 2 choices:
# - disable this feature by commenting the following 2 lines or
# - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
#   following RewriteCond (best solution)
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]

# Rewrite all other queries to the front controller.
RewriteRule .? %{ENV:BASE}/index.php [L]

<IfModule !mod_rewrite.c>

# When mod_rewrite is not available, we instruct a temporary redirect of
# the start page to the front controller explicitly so that the website
# and the generated links can still be used.
RedirectMatch 302 ^(?!/(index.php|index_dev.php|app|addons|plugins|media|upgrade))(/(.*))$ /index.php$2
# RedirectTemp cannot be used instead

# @link https://github.com/mautic/mautic/issues/1504 php_value always_populate_raw_post_data -1

We’ve recently installed Mautic on Ubuntu 16 at the location

/var/www/html/website.com/subdomains/mautic/httpdocs

We successfully went through the default Mautic installation procedure.

Now when we try to access

mautic.website.com we are redirected to mautic.website.com/s/dashboard, and, we get a File Not Found 404 error.

However, when I manually input ‘index.php’ into the url, mautic.website.com/index.php/s/dashboard, everything works perfectly. In fact, navigating around within the Mautic app, all links contain index.php. It’s not until we log out again that there is a problem.

What could be causing this? We’re using Apache2, 2.4.18 to be exact, and mod_rewrite is working fine, Require all granted is configured for the root directory for mautic, and I have not altered .htaccess at all from it’s default. (below is the .htaccess file contents as setup by the installation process)

What could be causing this issue and how do I fix it?

Thanks! Please let me know any other information you need that may be helpful!

# Use the front controller as index file. It serves as a fallback solution when
# every other rewrite/redirect fails (e.g. in an aliased environment without
# mod_rewrite). Additionally, this reduces the matching process for the
# start page (path "/") because otherwise Apache will apply the rewriting rules
# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
# DirectoryIndex index.php

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Set Authorization header for OAuth1a for when php is running under fcgi
    RewriteCond %{HTTP:Authorization} .+
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Determine the RewriteBase automatically and set it as environment variable.
    # If you are using Apache aliases to do mass virtual hosting or installed the
    # project in a subdirectory, the base path will be prepended to allow proper
    # resolution of the app.php file and to redirect to the correct URI. It will
    # work in environments without path prefix as well, providing a safe, one-size
    # fits all solution. But as you do not need it in this case, you can comment
    # the following 2 lines to eliminate the overhead.
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::2$
    RewriteRule ^(.*) - [E=BASE:%1]

    # Redirect to URI without front controller to prevent duplicate content
    # (with and without `/app.php`). Only do this redirect on the initial
    # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
    # endless redirect loop (request -> rewrite to front controller ->
    # redirect -> request -> ...).
    # So in case you get a "too many redirects" error or you always get redirected
    # to the start page because your Apache does not expose the REDIRECT_STATUS
    # environment variable, you have 2 choices:
    # - disable this feature by commenting the following 2 lines or
    # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
    #   following RewriteCond (best solution)
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^index.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    # If the requested filename exists, simply serve it.
    # We only want to let Apache serve files and not directories.
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    # Rewrite all other queries to the front controller.
    RewriteRule .? %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        # When mod_rewrite is not available, we instruct a temporary redirect of
        # the start page to the front controller explicitly so that the website
        # and the generated links can still be used.
        RedirectMatch 302 ^(?!/(index.php|index_dev.php|app|addons|plugins|media|upgrade))(/(.*))$ /index.php$2
        # RedirectTemp cannot be used instead
    </IfModule>
</IfModule>

<IfModule mod_php5.c>
    # @link https://github.com/mautic/mautic/issues/1504
    php_value always_populate_raw_post_data -1
</IfModule>

Hello!
I have the same problem until Microsoft IIS.
Can you post instructions how to make the same for IIS?

I see this was never answered, I have somehow just come across this issue with someone trying to move their Mautic from one server to another and seeing the exact behavior.

I have checked the local.php file and made sure all the new addresses are good there.

Started and stopped apache2. Installed SSL certificate.

Still getting the same behaviour

In response to my own problem I found the solution by adding in an .htaccess file: dbhurley/mautic/master/.htaccess - Htaccess File

Hi Mike!

For info, would recommend getting the htaccess from the official source:

Using something that is probably quite old on an external site means folk may not get the latest updates, if any!

2 Likes