Rewriting with lighttpd - how to remove file extensions

后端 未结 4 1015
囚心锁ツ
囚心锁ツ 2021-01-07 02:12

I would like to use lighttpd\'s mod_rewrite to allow requests without a specific file extension. For instance, I would like the following mappings to automatically work:

相关标签:
4条回答
  • 2021-01-07 03:00

    Cassy and natbro got this very nearly right, but as user102008 commented, this erroneously rewrites any directory index. Adding a url.rewrite-once matching anything ending with a '/' seems to make it work.

    url.rewrite-once = (  "^(.*)/$" => "$1/" )
    url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
    
    0 讨论(0)
  • 2021-01-07 03:06

    Without having tested it, but you can give it a shot:

    url.rewrite-once = ( 
      "^([^?]*)(\?.*)?$" => "$1.php$2",
    )
    

    Basically it means

    • take everything but a question mark
    • and, if exists, take the question mark and everything following

    and you rewrite it to the first part, include the .php and add the last part again.

    Again: I haven't tested it yet.

    0 讨论(0)
  • 2021-01-07 03:09

    yes

    ^(.*).php $1 [L,R,NC,QSA]

    that would be for .htaccess in a directory

    ^/(.*).php http://same.site/$1 [L,R,NC,QSA]

    where your domain is 'same.site' because it needs to redirect for the URL to change (as opposed to proxy)

    0 讨论(0)
  • 2021-01-07 03:10

    cassie's answer above is just about right. i would suggest dropping the trailing comma and using url-rewrite-if-not-file (available since 1.4.x lighttpd). this lets you serve other files that exist in the same directory without them getting rewritten.

    url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
    
    0 讨论(0)
提交回复
热议问题