Remove .php from URL

后端 未结 11 898
生来不讨喜
生来不讨喜 2020-12-15 22:17

Ubuntu 14.04LTS 32bit

LAMP

I know it\'s an old question but..

I need it to remove .php anywhere it finds it from the visible url. It needs to work wi

相关标签:
11条回答
  • 2020-12-15 22:22

    Assuming that .htaccess is being processed, then this super simple .htaccess should work for you:

    RewriteEngine on
    RewriteRule (.*) $1.php [END]
    

    If it doesn't work, there is something wrong with your Apache configuration. You need to look into that first.

    If it works, add the following line before the RewriteRule to allow serving other files:

    RewriteCond %{REQUEST_FILENAME} !-f
    

    The END flag is available since Apache 2.3.9.

    0 讨论(0)
  • 2020-12-15 22:23
    RewriteEngine on //replacement launch
    RewriteCond %{REQUEST_FILENAME} !-d //If the requested object is not a folder
    RewriteCond %{REQUEST_FILENAME}\.php -f //If the requested object to append the extension php - file
    RewriteRule ^(.*)$ $1.php //make the change from concatenating .php
    
    0 讨论(0)
  • 2020-12-15 22:27

    It works for me:

        #On rewrite
        RewriteEngine On
    
        # Allow any files or directories that exist to be displayed directly
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteCond %{REQUEST_FILENAME} !-d
    
        # rewrite domain.com/username.php to username
        RewriteRule ^([A-Za-z0-9_-]+)/?$ $1.php [NC,L]
        RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ $1/$2.php [NC,L]
        RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ $1/$2/$3.php [NC,L]
    

    And more: Look at my rewrite file for social portal like fb:

    # allow only from ip range /8 /16 /24 /31
        #Order deny,allow
        #Deny from all
        #Allow from 89.230.0.0/16
    
        # On rewrite
        RewriteEngine On
    
        # [NC]- case-insensitive 
        # [L] - Last Rule , stop the rewriting process here 
        # [OR] = Or - If it matches this condition or the next 
        # [QSA] -   Append query string to rewriting url
        # [R] - redirect [R=301] move permanently, 302 - temporarily, 403 - Forbidden, 404 - Not Found,  410 - Gone
    
        # fix folder redirect images and css js/images/css/media
        RewriteRule ^.+?/((img|css|js|media|upload|posts)/.+)$ /$1 [L,R=301,NC]
    
        # Allow any files or directories that exist to be displayed directly
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteCond %{REQUEST_FILENAME} !-d
        # does not work on IIS windows server url rewrite when importing
        # RewriteCond %[REQUEST_FILENAME] !-l
    
        # rewrite example.xx/index.php na example.xx/
        RewriteCond %{THE_REQUEST} ^.*/index\.php 
        RewriteRule ^(.*)index\.(php|html?)$ / [R=301,NC,L]
    
    
        #portfolio rewrite folder rewrite
        # RewriteRule ^([portfolio]+)/?$ /portfolio/index.php?id=$1 [NC,L]
    
        # pretty url example.xx/id/post/number 
        # rewrite domain.com/username like twitter or facebook users
        RewriteRule ^([A-za-z0-9_-]+)/?$ index.php?username=$1 [NC,L]
        # domain.com/post/name
        RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ profil.php?id=$1&menu=$2 [NC,L]
        # domain.com/cat/post/id
        RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([0-9]+)/?$ profil.php?id=$1&menu=$2&page=$3 [NC,L]
    
        #RewriteRule ^([A-Za-z0-9_-]+)/(ustawienia)/?$ ustawienia.php?id=$1&menu=$2 [NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/(wpisy)/?$ profil0.php?id=$1&menu=$2 [QSA,NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/(fani)/?$ profil1.php?id=$1&menu=$2 [QSA,NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/(ogladasz)/?$ profil2.php?id=$1&menu=$2 [QSA,NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/(zdjecia)/?$ profil3.php?id=$1&menu=$2 [QSA,NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/(video)/?$ profil4.php?id=$1&menu=$2 [QSA,NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/(ulubione)/?$ profil5.php?id=$1&menu=$2 [QSA,NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/(wiadomosci)/?$ profil6.php?id=$1&menu=$2 [QSA,NC,L]
        #RewriteRule ^([A-za-z0-9_-]+)/?$ profil.php?id=$1 [NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ profil.php?id=$1&menu=$2 [NC,L]
        #RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ index.php?id=$1&dir=$2&post=$3 [NC,L]
    
        # Redirect all subdomains
        # RewriteCond %{HTTP_HOST} ^(.*)\.breakermind\.com
        # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
    
        # Redirect all subdomains
        # RewriteCond %{HTTP_HOST} ^www.ns2.breakermind.com [NC]
        # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
    
        # RewriteCond %{HTTP_HOST} ^ns2.breakermind.com [NC]
        # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
    
        # Redirect from www. to non-www (unhash if need)
        # RewriteCond %{HTTP_HOST} ^www.breakermind.com [NC]
        # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
    
        # Redirect from http:// to https:// (from no-ssl to ssl)
        #RewriteCond %{SERVER_PORT} 80
        #RewriteRule ^(.*)$ https://breakermind.com/$1 [R=301,QSA,NC,L]
    
    
        ErrorDocument 400 /er404.html
        ErrorDocument 401 /er404.html
        ErrorDocument 402 /er404.html
        ErrorDocument 403 /er403.html
        ErrorDocument 404 /er404.html
        ErrorDocument 500 /er404.html
        ErrorDocument 502 /er404.html
        ErrorDocument 504 /er404.html
    
        #RewriteEngin On
        #RewriteCond %[REQUEST_FILENAME] !-d
        #RewriteCond %[REQUEST_FILENAME] !-f
        #RewriteCond %[REQUEST_FILENAME] !-l
        #RewriteRule ^(.+)$ index.php?c=$1 [QSA,L]
        #
        #        \w = [A-Za-z0-9_]  \d = [0-9]
    

    And here from my blog system:

            Options +FollowSymLinks
        RewriteEngine On
    
        RewriteCond %{THE_REQUEST} ^.*/index\.php 
        RewriteRule ^(.*)index\.(php|html?)$ / [R=301,NC,L]
    
        # category
        RewriteRule   ^category/?$ index.php?id=0&page=0  [NC,L]
        RewriteRule   ^category/([A-Za-z0-9]+)/?$ index.php?id=$1&page=0  [NC,L]
        RewriteRule   ^category/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?id=$1&page=$2  [NC,L]
        RewriteRule   ^category/([A-Za-z0-9]+)/([0-9]+)/([A-Za-z0-9]+)/?$ index.php?id=$1&page=$2&title=$3  [NC,L]
    
        # autor
        RewriteRule   ^autor/?$ index.php?id=0&page=0  [NC,L]
        RewriteRule   ^autor/([A-Za-z0-9]+)/?$ index.php?id=$1&page=0  [NC,L]
        RewriteRule   ^autor/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?id=$1&page=$2  [NC,L]
    
        # article, gallery, tags
        RewriteRule   ^article/([A-Za-z0-9]+)/?$ article.php?id=$1    [NC,L]
        RewriteRule   ^gallery/([A-Za-z0-9]+)/?$ gallery.php?id=$1    [NC,L]
        RewriteRule   ^tags/([A-Za-z0-9]+)/?$ tags.php?id=$1    [NC,L]
        RewriteRule   ^archive/([0-9]+)/([0-9]+)/?$ archive.php?year=$1&month=$2    [NC,L]
    
        # custom page rewrite
        RewriteRule   ^page/([A-Za-z0-9]+)/?$ page.php?id=$1    [NC,L]
    
        # fix folder redirect images and css js/images/css/media
        RewriteRule ^.+?/((admin|img|css|js|media|upload|posts)/.+)$ /blog/$1 [L,R=301,NC]
    
        # user or category user.php
        # RewriteRule   ^([A-Za-z0-9]+)/?$ index.php?user=$1  [NC,L]
    
        # example
        # RewriteRule ^([folder])/([category])/([A-Za-z0-9]+)/?$ index.php?id=$3&cat=$2 [NC,L]
    
    0 讨论(0)
  • 2020-12-15 22:29

    Check this link.

    This is the answer using .htaccess:

    RewriteEngine On
    
    # browser requests PHP
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
    RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
    
    # check to see if the request is for a PHP file:
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^/?(.*)$ /$1.php [L]
    

    Tested it on Windows with WAMP and working.

    0 讨论(0)
  • 2020-12-15 22:30

    You can try the following.

    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+?)/?$ $1.php$2 [L]
    
    0 讨论(0)
  • 2020-12-15 22:30

    It's working, You can try this code.

    1. First create .htaccess file in your main directory and paste the same code after that clear your history and its working.

    RewriteEngine on
    
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    
    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
    
    0 讨论(0)
提交回复
热议问题