Rewrite all queries to not need the .php extension using a mod_rewrite RewriteRule

前端 未结 5 645
情歌与酒
情歌与酒 2020-12-03 13:03

I\'d like all queries like

http://mysite.com/something/otherthing?foo=bar&x=y

to be rewritten as

http://mysite.com/some         


        
相关标签:
5条回答
  • 2020-12-03 13:16

    If you can change the httpd.conf and what to, you can also put:

    ForceType application/x-httpd-php
    

    in the file as it will force all the paths called to be PHP files. I think this also works with query strings.

    0 讨论(0)
  • 2020-12-03 13:18

    Matches only paths with no extension:

    RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php
    

    Edit: In my testing, the query string gets passed on automatically. If it doesn't, you can use this instead:

    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php?%1
    
    0 讨论(0)
  • 2020-12-03 13:34

    This works:

    RewriteCond %{QUERY_STRING} ^.+$
    RewriteRule ^/?([^/\.]+)$ /$1.php [L]
    

    The idea is to make sure there's a query string (question mark plus stuff) and if so check if the stuff before the question mark has no extension and if so, append .php.

    0 讨论(0)
  • 2020-12-03 13:39

    I would do it this way. Basically, if file doesn't exist, try adding .php to it.

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ $1.php [QSA,L]
    
    0 讨论(0)
  • 2020-12-03 13:39

    Something like...

    RewriteRule /something/(.+)?(.+) /something/$1.php?$2
    

    would probably work.

    0 讨论(0)
提交回复
热议问题