Repository: LycheeOrg/Lychee (language: php)

Issue:
Bad url for log viewer
### Detailed description of the problem [REQUIRED]
*A clear and concise description of what the bug is.*
For Lychee 4.9.2, in admin mode when I click on Display Log, the Url is "my_site/Logs" and normally it should be "my_site/public/Logs".

### Steps to reproduce the issue

1. Go to admin mode
2. Click on Display Logs

4. See error*
**Screenshots**
*If applicable, add screenshots to help explain your problem.*
![Capture d'écran 2023-06-18 154322](https://github.com/LycheeOrg/Lychee/assets/134057416/665881c3-e53c-4029-8079-c2cef4c2f2d0)


### Output of the diagnostics  [REQUIRED]
*(Settings => Diagnostics or https://example.com/Diagnostics or `php artisan lychee:diagnostics`)*
Diagnostics
    -------
    Warning: /home/hked1930/photos.martinelle.fr/public/uploads/ has permissions 0777, but should have 2775
    Warning: /home/hked1930/photos.martinelle.fr/public/uploads/thumb has permissions 0775, but should have 2775
    Warning: /home/hked1930/photos.martinelle.fr/public/uploads/thumb/30 has permissions 0775, but should have 2775
    Warning: /home/hked1930/photos.martinelle.fr/public/uploads/thumb/30/09 has permissions 0775, but should have 2775
    Warning: /home/hked1930/photos.martinelle.fr/public/uploads/thumb/30/00 has permissions 0775, but should have 2775
    Warning: 44335 more directories with wrong permissions
    Warning: Dropbox import not working. dropbox_key is empty.
    Info: Latest version of PHP is 8.2
    Foreign key: access_permissions.user_id     → users.id             : CASCADE
    Foreign key: albums.parent_id               → albums.id            : RESTRICT
    Foreign key: albums.id                      → base_albums.id       : RESTRICT
    Foreign key: albums.cover_id                → photos.id            : CASCADE
    Foreign key: base_albums.owner_id           → users.id             : RESTRICT
    Foreign key: jobs_history.owner_id          → users.id             : RESTRICT
    Foreign key: photos.album_id                → albums.id            : RESTRICT
    Foreign key: photos.owner_id                → users.id             : RESTRICT
    Foreign key: size_variants.photo_id         → photos.id            : RESTRICT
    Foreign key: sym_links.size_variant_id      → size_variants.id     : RESTRICT
    Foreign key: tag_albums.id                  → base_albums.id       : RESTRICT



    System Information
    --------------
    Lychee Version (release):                4.9.2
    DB Version:                              4.9.2
    
    composer install:                        --no-dev
    APP_ENV:                                 production
    APP_DEBUG:                               false
    
    System:                                  Linux
    PHP Version:                             8.1.18
    PHP User agent:                          Lychee/4 (https://lycheeorg.github.io/)
    Timezone:                                Europe/Paris
    Max uploaded file size:                  128M
    Max post size:                           128M
    Max execution time:                      200
    MySQL Version:                           10.6.14-MariaDB
    
    exec() Available:                        yes
    Imagick Available:                       1
    Imagick Enabled:                         1
    Imagick Version:                         1808
    GD Version:                              2.3.3
    Number of foreign key:                   11 found.



    Config Information
    --------------
    version:                                 040902
    check_for_updates:                       1
    sorting_photos_col:                      taken_at
    sorting_photos_order:                    ASC
    sorting_albums_col:                      title
    sorting_albums_order:                    ASC
    imagick:                                 1
    skip_duplicates:                         1
    small_max_width:                         0
    small_max_height:                        360
    medium_max_width:                        1920
    medium_max_height:                       1080
    lang:                                    fr
    layout:                                  1
    image_overlay_type:                      desc
    default_license:                         none
    compression_quality:                     90
    grants_full_photo_access:                1
    delete_imported:                         0
    mod_frame_enabled:                       1
    mod_frame_refresh:                       10
    thumb_2x:                                1
    small_2x:                                1
    medium_2x:                               1
    landing_page_enable:                     1
    site_owner:                              Jean Martinelle
    landing_title:                           Jean Martinelle
    landing_subtitle:                        Les photographies de Jean
    sm_facebook_url:                        
    sm_flickr_url:                          
    sm_twitter_url:                          
    sm_instagram_url:                       
    sm_youtube_url:                         
    landing_background:                      dist/PageDeGarde.webp
    site_title:                              Les photographies de Jean
    footer_show_copyright:                   1
    site_copyright_begin:                    2003
    site_copyright_end:                      2023
    footer_additional_text:                  
    footer_show_social_media:                1
    public_search:                           1
    SL_enable:                               0
    SL_for_admin:                            0
    recent_age:                              5
    grants_download:                         1
    photos_wraparound:                       0
    map_display:                             1
    zip64:                                   1
    map_display_public:                      1
    map_provider:                            OpenStreetMap.fr
    force_32bit_ids:                         0
    map_include_subalbums:                   1
    update_check_every_days:                 1
    has_exiftool:                            0
    share_button_visible:                    1
    import_via_symlink:                      0
    has_ffmpeg:                              0
    location_decoding:                       1
    location_decoding_timeout:               30
    location_show:                           1
    location_show_public:                    1
    rss_enable:                              1
    rss_recent_days:                         7
    rss_max_items:                           100
    prefer_available_xmp_metadata:           0
    editor_enabled:                          1
    lossless_optimization:                   0
    swipe_tolerance_x:                       150
    swipe_tolerance_y:                       250
    local_takestamp_video_formats:           .avi|.mov
    log_max_num_line:                        1000
    unlock_password_photos_with_url_param:   0
    nsfw_visible:                            1
    nsfw_blur:                               0
    nsfw_warning:                            0
    nsfw_warning_admin:                      0
    nsfw_banner_override:                    
    map_display_direction:                   1
    album_subtitle_type:                     oldstyle
    upload_processing_limit:                 4
    public_photos_hidden:                    1
    new_photos_notification:                 1
    legacy_id_redirection:                   1
    zip_deflate_level:                       6
    SA_enabled:                              1
    default_album_protection:                1
    album_decoration:                        layers
    album_decoration_orientation:            row
    allow_username_change:                   1
    auto_fix_orientation:                    1
    use_job_queues:                          0
    random_album_id:                         starred
    use_last_modified_date_when_no_exif_date: 0



### Browser and system
Chrome and Windows 11


Discussion / hints:
Hello ,

I get the same issue after installing 4.9.3 in a subfolder i.e http://domain.com/lychee493. When i click on Show Logs it searches in URL http://domain.com/Logs.

@ildyria  Could you please look in to the issue. 

Fix patch:
diff --git a/public/Lychee-front b/public/Lychee-front
index 3f6cdb19511..42d044bc478 160000
--- a/public/Lychee-front
+++ b/public/Lychee-front
@@ -1,1 +1,1 @@
-Subproject commit 3f6cdb1951178eef3bd70d17b939f2025b928fa1
+Subproject commit 42d044bc478ad02a8940012d1c7d18a1114e0e74
diff --git a/public/dist/frontend.js b/public/dist/frontend.js
index 173d3f442c6..9286c3833f7 100644
--- a/public/dist/frontend.js
+++ b/public/dist/frontend.js
@@ -2908,7 +2908,7 @@ tabindex.makeUnfocusable(header.dom());tabindex.makeUnfocusable(lychee.content);
  */leftMenu.bind=function(){// Event Name
 var eventName="click";leftMenu.dom("#button_settings_close").on(eventName,leftMenu.close);leftMenu.dom("#button_settings_open").on(eventName,function(){leftMenu.closeIfResponsive();settings.open();});leftMenu.dom("#button_signout").on(eventName,lychee.logout);leftMenu.dom("#button_logs").on(eventName,leftMenu.Logs);leftMenu.dom("#button_diagnostics").on(eventName,leftMenu.Diagnostics);leftMenu.dom("#button_about").on(eventName,lychee.aboutDialog);leftMenu.dom("#button_notifications").on(eventName,leftMenu.Notifications);leftMenu.dom("#button_users").on(eventName,leftMenu.Users);leftMenu.dom("#button_u2f").on(eventName,leftMenu.u2f);leftMenu.dom("#button_sharing").on(eventName,leftMenu.Sharing);leftMenu.dom("#button_update").on(eventName,leftMenu.Update);};/**
  * @returns {void}
- */leftMenu.Logs=function(){leftMenu.closeIfResponsive();window.open("/Logs");};/**
+ */leftMenu.Logs=function(){leftMenu.closeIfResponsive();window.open("Logs");};/**
  * @returns {void}
  */leftMenu.Diagnostics=function(){leftMenu.closeIfResponsive();view.diagnostics.init();};/**
  * @returns {void}


Test patch: