Files
2026-09-15 04:58:49 +07:00

2.8 KiB

Clean User URLs for OJS 3.5

Targeted for the OJS 3.5.0-5 source tree supplied for testing.

The plugin changes the site-level account menu links and also rewrites the site-name/header link to /:

  • Dashboard -> /dashboard
  • Profile -> /profile
  • Administration -> /admin
  • Log Out -> /logout
  • Site name/header -> /

Journal-context navigation is intentionally not changed.

Required .htaccess aliases

Place these rules before the generic OJS catch-all rewrite rule:

RewriteRule ^dashboard/?$ index.php/index/id/index [L,QSA]
RewriteRule ^profile/?$ index.php/index/id/user/profile [L,QSA]
RewriteRule ^admin/?$ index.php/index/id/admin/index [L,QSA]
RewriteRule ^logout/?$ index.php/index/id/login/signOut [L,QSA]

Then keep the existing OJS rules, for example:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

If the configured site locale/path is changed from id, update the internal targets above accordingly.

Install

Upload the ZIP from Site Settings -> Plugins -> Upload A New Plugin, then enable Clean User URLs.

If the plugin cannot be uploaded from the UI, extract cleanUserUrls into plugins/generic/ and enable it from the plugin list.

1.0.0.2

Fix output-filter callback compatibility with Smarty in OJS 3.5.0-5.

1.0.0.4

Adds a conservative clean URL for the exact site-level Administration breadcrumb/home link:

  • /index/id/admin -> /admin
  • /index/id/admin/index -> /admin

It deliberately does not rewrite child admin URLs such as /index/id/admin/settings, component ($$$call$$$) routes, API routes, or AJAX endpoints.

1.0.0.5

Fixes the Administration-link matching bug in v1.0.0.4 and cleans ordinary site-level Administration URLs while leaving component/API/AJAX routes alone.

Requires Apache aliases such as: /admin/contexts -> index.php/index/id/admin/contexts.

1.0.0.6

Adds clean ordinary site-level user URLs.

Examples:

  • /index/id/user/profile -> /user/profile
  • /index/id/user/register -> /user/register

Requires: RewriteRule ^user/(.*)$ index.php/index/id/user/$1 [L,QSA]

Component/AJAX ($$$call$$$) and API routes remain untouched.

1.0.0.7

Fixes the backend Edit Profile link in OJS 3.5.

The backend top navigation is rendered by Vue after Smarty output filters run, so the plugin now adds a small backend-only MutationObserver that changes only:

  • /index/id/user/profile -> /user/profile

No API, component ($$$call$$$), journal-context, or profile-tab routes are modified.

1.0.0.8

Extends the backend Vue user-menu helper to clean both:

  • /index/id/user/profile -> /user/profile
  • /index/id/login/signOut -> /logout

No API, component ($$$call$$$), profile-tab, or journal-context routes are modified.