title: Redirect a route to admin panel of Typo3 in Laravel
body: <p>My directory structure of Laravel site look like this...</p>
  
  <pre><code>app
  bootstrap
  ...
  public
  resources
  routes
  storage
  typo3Folder
  ...
  </code></pre>
  
  <p>I want if User hit <strong>www.example.com/admin</strong>, it redirect to this typo3 sub-folder
  contents which is Typo3 Admin Panel..</p>
  
  <blockquote>
    <p>typo3Folder/public/typo3/index.php</p>
  </blockquote>
  
  <p>but URL should not be change, it should be same like <strong>www.example.com/admin/*</strong></p>
  
  <p>I tried this</p>
  
  <blockquote>
    <p>RedirectMatch 301 /admin /typo3Folder/public/typo3/index.php/$1</p>
  </blockquote>
  
  <p>But it gives <strong>Too many Redirects attempts, ERR_TOO_MANY_REDIRECTS</strong> error
  Please help me, how can I achieve this...</p>
  
  <p>This is my Laravel .htaccess file in /public..</p>
  
  <pre><code>&lt;IfModule mod_rewrite.c&gt;
      &lt;IfModule mod_negotiation.c&gt;
          Options -MultiViews -Indexes
      &lt;/IfModule&gt;
  
      RewriteEngine On
  
  
      # Handle Authorization Header
      RewriteCond %{HTTP:Authorization} .
      RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  
      # Redirect Trailing Slashes If Not A Folder...
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_URI} (.+)/$
      RewriteRule ^ %1 [L,R=301]
  
      # Handle Front Controller...
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^ index.php [L]
  
  &lt;/IfModule&gt;
  </code></pre>
  
  <p>And Below is Typo3 .htaccess file which is located in <strong>typo3Folder/public/</strong> directory...</p>
  
  <pre><code>#####
  #
  # Example .htaccess file for TYPO3 CMS - for use with Apache Webserver
  #
  # This file includes settings for the following configuration options:
  #
  # - Compression
  # - Caching
  # - MIME types
  # - Cross Origin requests
  # - Rewriting and Access
  # - Miscellaneous
  # - PHP optimisation
  #
  # If you want to use it, you have to copy it to the root folder of your TYPO3 installation (if its
  # not there already) and rename it to '.htaccess'. To make .htaccess files work, you might need to
  # adjust the 'AllowOverride' directive in your Apache configuration file.
  #
  # IMPORTANT: You may need to change this file depending on your TYPO3 installation!
  #            Consider adding this file's content to your webserver's configuration directly for speed improvement
  #
  # Lots of the options are taken from https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess
  #
  ####
  
  
  ### Begin: Compression ###
  
  # Compressing resource files will save bandwidth and so improve loading speed especially for users
  # with slower internet connections. TYPO3 can compress the .js and .css files for you.
  # *) Uncomment the following lines and
  # *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
  # *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
  #    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
  
  #&lt;FilesMatch "\.js\.gzip$"&gt;
  #   AddType "text/javascript" .gzip
  #&lt;/FilesMatch&gt;
  #&lt;FilesMatch "\.css\.gzip$"&gt;
  #   AddType "text/css" .gzip
  #&lt;/FilesMatch&gt;
  #AddEncoding gzip .gzip
  
  &lt;IfModule mod_deflate.c&gt;
      # Force compression for mangled `Accept-Encoding` request headers
      &lt;IfModule mod_setenvif.c&gt;
          &lt;IfModule mod_headers.c&gt;
              SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
              RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
          &lt;/IfModule&gt;
      &lt;/IfModule&gt;
  
      # Compress all output labeled with one of the following media types.
      #
      # (!) For Apache versions below version 2.3.7 you don't need to
      # enable `mod_filter` and can remove the `&lt;IfModule mod_filter.c&gt;`
      # and `&lt;/IfModule&gt;` lines as `AddOutputFilterByType` is still in
      # the core directives.
      #
      # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
  
      &lt;IfModule mod_filter.c&gt;
          AddOutputFilterByType DEFLATE application/atom+xml \
              application/javascript \
              application/json \
              application/ld+json \
              application/manifest+json \
              application/rdf+xml \
              application/rss+xml \
              application/schema+json \
              application/vnd.geo+json \
              application/vnd.ms-fontobject \
              application/x-font-ttf \
              application/x-javascript \
              application/x-web-app-manifest+json \
              application/xhtml+xml \
              application/xml \
              font/eot \
              font/opentype \
              image/bmp \
              image/svg+xml \
              image/vnd.microsoft.icon \
              image/x-icon \
              text/cache-manifest \
              text/css \
              text/html \
              text/javascript \
              text/plain \
              text/vcard \
              text/vnd.rim.location.xloc \
              text/vtt \
              text/x-component \
              text/x-cross-domain-policy \
              text/xml
      &lt;/IfModule&gt;
  
      &lt;IfModule mod_mime.c&gt;
          AddEncoding gzip svgz
      &lt;/IfModule&gt;
  &lt;/IfModule&gt;
  
  ### End: Compression ###
  
  
  
  ### Begin: Browser caching of resource files ###
  
  # This affects Frontend and Backend and increases performance.
  &lt;IfModule mod_expires.c&gt;
  
      ExpiresActive on
      ExpiresDefault                                      "access plus 1 month"
  
      ExpiresByType text/css                              "access plus 1 year"
  
      ExpiresByType application/json                      "access plus 0 seconds"
      ExpiresByType application/ld+json                   "access plus 0 seconds"
      ExpiresByType application/schema+json               "access plus 0 seconds"
      ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
      ExpiresByType application/xml                       "access plus 0 seconds"
      ExpiresByType text/xml                              "access plus 0 seconds"
  
      ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
      ExpiresByType image/x-icon                          "access plus 1 week"
  
      ExpiresByType text/x-component                      "access plus 1 month"
  
      ExpiresByType text/html                             "access plus 0 seconds"
  
      ExpiresByType application/javascript                "access plus 1 year"
      ExpiresByType application/x-javascript              "access plus 1 year"
      ExpiresByType text/javascript                       "access plus 1 year"
  
      ExpiresByType application/manifest+json             "access plus 1 week"
      ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
      ExpiresByType text/cache-manifest                   "access plus 0 seconds"
  
      ExpiresByType audio/ogg                             "access plus 1 month"
      ExpiresByType image/bmp                             "access plus 1 month"
      ExpiresByType image/gif                             "access plus 1 month"
      ExpiresByType image/jpeg                            "access plus 1 month"
      ExpiresByType image/png                             "access plus 1 month"
      ExpiresByType image/svg+xml                         "access plus 1 month"
      ExpiresByType image/webp                            "access plus 1 month"
      ExpiresByType video/mp4                             "access plus 1 month"
      ExpiresByType video/ogg                             "access plus 1 month"
      ExpiresByType video/webm                            "access plus 1 month"
  
      ExpiresByType application/atom+xml                  "access plus 1 hour"
      ExpiresByType application/rdf+xml                   "access plus 1 hour"
      ExpiresByType application/rss+xml                   "access plus 1 hour"
  
      ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
      ExpiresByType font/eot                              "access plus 1 month"
      ExpiresByType font/opentype                         "access plus 1 month"
      ExpiresByType application/x-font-ttf                "access plus 1 month"
      ExpiresByType application/font-woff                 "access plus 1 month"
      ExpiresByType application/x-font-woff               "access plus 1 month"
      ExpiresByType font/woff                             "access plus 1 month"
      ExpiresByType application/font-woff2                "access plus 1 month"
  
      ExpiresByType text/x-cross-domain-policy            "access plus 1 week"
  
  &lt;/IfModule&gt;
  
  ### End: Browser caching of resource files ###
  
  
  ### Begin: MIME types ###
  
  # Proper MIME types for all files
  &lt;IfModule mod_mime.c&gt;
  
      # Data interchange
      AddType application/atom+xml                        atom
      AddType application/json                            json map topojson
      AddType application/ld+json                         jsonld
      AddType application/rss+xml                         rss
      AddType application/vnd.geo+json                    geojson
      AddType application/xml                             rdf xml
  
      # JavaScript
      AddType application/javascript                      js
  
      # Manifest files
      AddType application/manifest+json                   webmanifest
      AddType application/x-web-app-manifest+json         webapp
      AddType text/cache-manifest                         appcache
  
      # Media files
  
      AddType audio/mp4                                   f4a f4b m4a
      AddType audio/ogg                                   oga ogg opus
      AddType image/bmp                                   bmp
      AddType image/svg+xml                               svg svgz
      AddType image/webp                                  webp
      AddType video/mp4                                   f4v f4p m4v mp4
      AddType video/ogg                                   ogv
      AddType video/webm                                  webm
      AddType video/x-flv                                 flv
      AddType image/x-icon                                cur ico
  
      # Web fonts
      AddType application/font-woff                       woff
      AddType application/font-woff2                      woff2
      AddType application/vnd.ms-fontobject               eot
      AddType application/x-font-ttf                      ttc ttf
      AddType font/opentype                               otf
  
      # Other
      AddType application/octet-stream                    safariextz
      AddType application/x-bb-appworld                   bbaw
      AddType application/x-chrome-extension              crx
      AddType application/x-opera-extension               oex
      AddType application/x-xpinstall                     xpi
      AddType text/vcard                                  vcard vcf
      AddType text/vnd.rim.location.xloc                  xloc
      AddType text/vtt                                    vtt
      AddType text/x-component                            htc
  
  &lt;/IfModule&gt;
  
  # UTF-8 encoding
  AddDefaultCharset utf-8
  &lt;IfModule mod_mime.c&gt;
      AddCharset utf-8 .atom .css .js .json .manifest .rdf .rss .vtt .webapp .webmanifest .xml
  &lt;/IfModule&gt;
  
  ### End: MIME types ###
  
  
  
  ### Begin: Cross Origin ###
  
  # Send the CORS header for images when browsers request it.
  &lt;IfModule mod_setenvif.c&gt;
      &lt;IfModule mod_headers.c&gt;
          &lt;FilesMatch "\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$"&gt;
              SetEnvIf Origin ":" IS_CORS
              Header set Access-Control-Allow-Origin "*" env=IS_CORS
          &lt;/FilesMatch&gt;
      &lt;/IfModule&gt;
  &lt;/IfModule&gt;
  
  # Allow cross-origin access to web fonts.
  &lt;IfModule mod_headers.c&gt;
      &lt;FilesMatch "\.(eot|otf|tt[cf]|woff2?)$"&gt;
          Header set Access-Control-Allow-Origin "*"
      &lt;/FilesMatch&gt;
  &lt;/IfModule&gt;
  
  ### End: Cross Origin ###
  
  
  
  ### Begin: Rewriting and Access ###
  
  # You need rewriting, if you use a URL-Rewriting extension (RealURL, CoolUri).
  
  &lt;IfModule mod_rewrite.c&gt;
  
      # Enable URL rewriting
      RewriteEngine On
  
      # Store the current location in an environment variable CWD to use
      # mod_rewrite in .htaccess files without knowing the RewriteBase
      RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
      RewriteRule ^.*$ - [E=CWD:%2]
  
      # Rules to set ApplicationContext based on hostname
      #RewriteCond %{HTTP_HOST} ^dev\.example\.com$
      #RewriteRule .? - [E=TYPO3_CONTEXT:Development]
      #RewriteCond %{HTTP_HOST} ^staging\.example\.com$
      #RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
      #RewriteCond %{HTTP_HOST} ^www\.example\.com$
      #RewriteRule .? - [E=TYPO3_CONTEXT:Production]
  
      # Rule for versioned static files, configured through:
      # - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
      # - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
      # IMPORTANT: This rule has to be the very first RewriteCond in order to work!
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ %{ENV:CWD}$1.$3 [L]
  
      # Access block for folders
      RewriteRule _(?:recycler|temp)_/ - [F]
      RewriteRule fileadmin/templates/.*\.(?:txt|ts)$ - [F]
      RewriteRule ^(?:vendor|typo3_src|typo3temp/var) - [F]
      RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ - [F]
  
      # Block access to all hidden files and directories with the exception of
      # the visible content from within the `/.well-known/` hidden directory (RFC 5785).
      RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
      RewriteCond %{SCRIPT_FILENAME} -d [OR]
      RewriteCond %{SCRIPT_FILENAME} -f
      RewriteRule (?:^|/)\. - [F]
  
      # Stop rewrite processing, if we are in the typo3/ directory or any other known directory
      # NOTE: Add your additional local storages here
      RewriteRule ^(?:typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L]
  
      # If the file/symlink/directory does not exist =&gt; Redirect to index.php.
      # For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-l
      RewriteRule ^.*$ %{ENV:CWD}index.php [QSA,L]
  
  &lt;/IfModule&gt;
  
  # Access block for files
  # Apache &lt; 2.3
  &lt;IfModule !mod_authz_core.c&gt;
      &lt;FilesMatch "(?i:^\.|^#.*#|^(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|^composer\.(?:json|lock)|^ext_conf_template\.txt|^ext_typoscript_constants\.txt|^ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$"&gt;
          Order allow,deny
          Deny from all
          Satisfy All
      &lt;/FilesMatch&gt;
  &lt;/IfModule&gt;
  # Apache ≥ 2.3
  &lt;IfModule mod_authz_core.c&gt;
      &lt;If "%{REQUEST_URI} =~ m#(?i:/\.|/\x23.*\x23|/(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|/composer\.(?:json|lock)|/ext_conf_template\.txt|/ext_typoscript_constants\.txt|/ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$#"&gt;
          Require all denied
      &lt;/If&gt;
  &lt;/IfModule&gt;
  
  # Block access to vcs directories
  &lt;IfModule mod_alias.c&gt;
      RedirectMatch 404 /\.(?:git|svn|hg)/
  &lt;/IfModule&gt;
  
  ### End: Rewriting and Access ###
  
  
  
  ### Begin: Miscellaneous ###
  
  # 404 error prevention for non-existing redirected folders
  Options -MultiViews
  
  # Make sure that directory listings are disabled.
  &lt;IfModule mod_autoindex.c&gt;
      Options -Indexes
  &lt;/IfModule&gt;
  
  &lt;IfModule mod_headers.c&gt;
      # Force IE to render pages in the highest available mode
      Header set X-UA-Compatible "IE=edge"
      &lt;FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff2?|xml|xpi)$"&gt;
          Header unset X-UA-Compatible
      &lt;/FilesMatch&gt;
  
      # Reducing MIME type security risks
      Header set X-Content-Type-Options "nosniff"
  &lt;/IfModule&gt;
  
  # ETag removal
  &lt;IfModule mod_headers.c&gt;
      Header unset ETag
  &lt;/IfModule&gt;
  FileETag None
  
  ### End: Miscellaneous ###
  
  
  # Add your own rules here.
  </code></pre>