Fixed Exception to “Use full friendly URLs”

Aivaras

Active member
Affected version
2.2.10 Patch 1
To reproduce:
  1. Check “Use full friendly URLs” in ACP > Setup > Options > Basic options;
  2. Ensure .htaccess with appropriate rules is available in the server;
  3. Uncheck “Board is active” in ACP > Setup > Options > Board active;
  4. Click the link to the forum in the upper left corner of the ACP;
  5. Result: “index.php” is appended to the address of the forum if the user is not an admin.
 

Brogan

XenForo moderator
Staff member
I am not able to reproduce that.

I can manually add index.php to the URL when a guest, which remains, but then I can also add 'blah' or 'moo' which also remains, as it is the error page which is being served to non-admins when the board is closed, not a specific page.
 

Aivaras

Active member
Are you logged out of the forum? You should be logged out, or be logged in as a non-admin? Did you meet these conditions in your tests?
 

Martyn

Active member
I can reproduce it, basically when the board is not active, going to the website will show the index.php file, but if the board is active, it removes the index.php file
 

nocte

Well-known member
That's no bug! The redirect /index.php to / comes from the controller class/method XF\Pub\Controller\Forum::actionList():

PHP:
        $selfRoute = ($this->options()->forumsDefaultPage == 'forums' ? 'forums' : 'forums/list');

        $this->assertCanonicalUrl($this->buildLink($selfRoute));

If the forum is closed and you are not an admin, this code is never executed. The class/method XF\Pub\Controller\AbstractController::assertBoardActive() stops the process before the Forum controller is even loaded:

PHP:
    public function assertBoardActive($action)
    {
        $options = $this->options();
        if (!$options->boardActive && !\XF::visitor()->is_admin)
        {
            $reply = $this->message(new \XF\PreEscaped($options->boardInactiveMessage), $this->app->config('serviceUnavailableCode'));
            $reply->setPageParam('skipSidebarWidgets', true);

            throw $this->exception($reply);
        }
    }

also note: If you change the "Index page route" option in admin cp, then there might be no redirect at all, if you visit /index.php, because $this->assertCanonicalUrl() is not part of all controllers. You can test this with help/ as "Index page route".
 

nocte

Well-known member
It certainly is not in line with XenForo’s description of “Use full friendly URLs”:
Read the sentence again: It says "links generated by the system" (this means the frontend in particular) and not "URLs you enter manually or follow during maintenance mode". :rolleyes:
 

Aivaras

Active member
Read the sentence again: It says "links generated by the system" (this means the frontend in particular) […]
Exactly, and it's broken:
  1. the link in the upper left corner of the ACP is generated by the system;
  2. the address the link resolves to belongs to the front-end and is unfriendly.
[…] and not "URLs you enter manually or follow during maintenance mode".
Whom are you quoting?
 

nocte

Well-known member
the link in the upper left corner of the ACP is generated by the system;
but not the fronend. The admin cp can be called "backend".

btw: you are missing the point of "friendly urls": This means, that the route is not appended to index.php?.

the address the link resolves to belongs to the front-end and is unfriendly.
Visit https://xenforo.com/community/index.php?help/ - there you have an index.php? in the URL as well, because no redirect is implemented in the Help controller. This is also not a bug tough, because this link was not generated by the system.
 

Aivaras

Active member
but not the fronend. The admin cp can be called "backend".
Firstly, the back-end does generate a friendly URL under one set of conditions (board is active), and it does not under another set of conditions (board is inactive). So back/front-end distinction does not remove the inconsistency in behavior.

Secondly, the address of the link resolves in the front-end and it is exposed to the users of the front-end. Isn't this—the public appearance of links—the whole point of URL friendliness?

This is also not a bug tough, because this link was not generated by the system.
This thread is about a case that is generated by the system.

It may or may not be intentional. Let the developers have a say.
 

XF Bug Bot

XenForo bug fixer bot
Staff member
Thank you for reporting this issue, it has now been resolved. We are aiming to include any changes that have been made in a future XF release (2.2.12).

Change log:
Dynamically build link to front-end in the control panel
There may be a delay before changes are rolled out to the XenForo Community.
 
Top