Search code examples
phpapache.htaccessmod-rewriteurl-rewriting

How work for RewriteRule in .htaccess (laravel 5.3)


I have made a virtual host as school-laravel.dev

My project .htaccess file is as

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

<FilesMatch "^\.env">
        Order allow,deny
        Deny from all
    </FilesMatch>

I want if user enters school-laravel.dev/whatever it should be redirect to school-laravel.dev/students How to rewrite this rule above in .htaccess

i tried as but its not working

RewriteRule ^test\/?(.*)$ "http://demo.school-pre.com/students/$1" [R=301,L]

Thanks in advance


Solution

  • You can use following code in htaccess for redirect.

    This will #Redirect from old domain to new domain with full path and query string:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^(.*) http://demo.school-pre.com/students%{REQUEST_URI} [R=302,NC]
    

    Also I found "ScottPhillips" git-hub page where he is explained awesome how to use htaccess on various conditions.

    Below is his examples.

    #301 Redirects for .htaccess
    
    #Redirect a single page:
    Redirect 301 /pagename.php http://www.domain.com/pagename.html
    
    #Redirect an entire site:
    Redirect 301 / http://www.domain.com/
    
    #Redirect an entire site to a sub folder
    Redirect 301 / http://www.domain.com/subfolder/
    
    #Redirect a sub folder to another site
    Redirect 301 /subfolder http://www.domain.com/
    
    #This will redirect any file with the .html extension to use the same filename but use the .php extension instead.
    RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php
    
    ##
    #You can also perform 301 redirects using rewriting via .htaccess.
    ##
    
    #Redirect from old domain to new domain
    RewriteEngine on
    RewriteBase /
    RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
    
    #Redirect to www location
    RewriteEngine on
    RewriteBase /
    rewritecond %{http_host} ^domain.com [nc]
    rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
    
    #Redirect to www location with subdirectory
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]
    
    #Redirect from old domain to new domain with full path and query string:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]
    
    #Redirect from old domain with subdirectory to new domain w/o subdirectory including full path and query string:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$
    RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC]
    
    Rewrite and redirect URLs with query parameters (files placed in root directory)
    
    Original URL:
    
    http://www.example.com/index.php?id=1
    Desired destination URL:
    
    http://www.example.com/path-to-new-location/
    .htaccess syntax:
    
    RewriteEngine on
    RewriteCond %{QUERY_STRING} id=1
    RewriteRule ^index\.php$ /path-to-new-location/? [L,R=301]
    Redirect URLs with query parameters (files placed in subdirectory)
    
    Original URL:
    
    http://www.example.com/sub-dir/index.php?id=1
    Desired destination URL:
    
    http://www.example.com/path-to-new-location/
    .htaccess syntax:
    
    RewriteEngine on
    RewriteCond %{QUERY_STRING} id=1
    RewriteRule ^sub-dir/index\.php$ /path-to-new-location/? [L,R=301]
    Redirect one clean URL to a new clean URL
    
    Original URL:
    
    http://www.example.com/old-page/
    Desired destination URL:
    http://www.example.com/new-page/
    .htaccess syntax:
    
    RewriteEngine On
    RewriteRule ^old-page/?$ $1/new-page$2 [R=301,L]
    Rewrite and redirect URLs with query parameter to directory based structure, retaining query string in URL root level
    
    Original URL:
    
    http://www.example.com/index.php?id=100
    Desired destination URL:
    
    http://www.example.com/100/
    .htaccess syntax:
    
    RewriteEngine On
    RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA]
    Rewrite URLs with query parameter to directory based structure, retaining query string parameter in URL subdirectory
    
    Original URL:
    http://www.example.com/index.php?category=fish
    Desired destination URL:
    http://www.example.com/category/fish/
    .htaccess syntax:
    
    RewriteEngine On
    RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]
    Domain change – redirect all incoming request from old to new domain (retain path)
    
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC]
    RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L]
    If you do not want to pass the path in the request to the new domain, change the last row to:
    
    RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L]
    
    #From blog.oldsite.com -> www.somewhere.com/blog/
    retains path and query, and eliminates xtra blog path if domain is blog.oldsite.com/blog/
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{REQUEST_URI}/ blog
    RewriteRule ^(.*) http://www.somewhere.com/%{REQUEST_URI} [R=302,NC]
    RewriteRule ^(.*) http://www.somewhere.com/blog/%{REQUEST_URI} [R=302,NC]