=HTTP=
The Everything HTTP server is a web server that allows you to search and access your files from a web browser.

==Start a HTTP server==
To start a HTTP server:
<ul>
*In '''''Everything''''', From the '''Tools '''menu, click '''Options'''.
*Click the''' HTTP Server''' tab.
*Check '''Enable HTTP server'''.
*Click '''OK'''.
</ul>

==View a HTTP server==
Start the HTTP server and open http://ComputerName in your web browser. Where ComputerName is the name of the computer running the HTTP server.


==Set a username and password==
Changing the username and password will take effect immediately.

To change the HTTP server username and password
<ul>
*In '''Everything''', from the '''Tools '''menu, click '''Options'''
*Click the '''HTTP server''' tab.
*Type in a new '''username '''and '''password'''.
*Click '''OK'''
</ul>

==Disable file downloading==
You can disable file downloading and allow clients to list results only.

To disable HTTP file downloading:
<ul>
*In '''Everything''', from the '''Tools '''menu, click '''Options'''
*Click the '''HTTP server''' tab.
*Uncheck''' Allow file download'''.
*Click '''OK'''
</ul>

==URL query string==

Syntax:
<pre>
http://localhost/?s=&o=0&c=32&j=0&i=0&w=0&p=0&r=0&m=0&path_column=0&size_column=0&date_modified_column=0&sort=name&ascending=1
</pre>
key=value pairs can be omitted if not required.

Keys:
<dl>
;''s''
;''q''
;''search''
search text
;''o''
;''offset''
display results from the nth result
;''c''
;''count''
return no more than value results
;''j''
;''json''
return results as a JSON object if value is nonzero
;''i''
;''case''
match case if value is nonzero
;''w''
;''wholeword''
search whole words if value is nonzero
;''p''
;''path''
search whole paths if value is nonzero
;''r''
;''regex''
perform a regex search if value is nonzero
;''m''
;''diacritics''
match diacritics if value is nonzero
;''path_column''
list the result's path in the json object if value is nonzero
;''size_column''
list the result's size in the json object if value is nonzero
;''date_modified_column''
list the result's modified date in the json object if value is nonzero
;''sort''
where value can be one of the following:
{|
! Sort name
! Description
|-
| name
| Sort by Name.
|-
| path
| Sort by Path.
|-
| date_modified 
| Sort by Date Modified.
|-
| size
| Sort by Size.
|}

;''ascending''
sort by ascending order if value is nonzero
</dl>

Default html query strings values:
{|
! Key
! Value
|-
| search
| 
|-
| offset
| 0
|-
| count
| 32
|-
| json
| 0
|-
| case
| 0
|-
| wholeword
| 0
|-
| path
| 0
|-
| regex
| 0
|-
| diacritics
| 0
|-
| sort
| name
|-
| ascending
| 1
|}

Default JSON object query strings values:
{|
! Key
! Value
|-
| search
| 
|-
| offset
| 0
|-
| count
| 4294967295
|-
| json
| 1
|-
| case
| 0
|-
| wholeword
| 0
|-
| path
| 0
|-
| regex
| 0
|-
| diacritics
| 0
|-
| path_column
| 0
|-
| size_column
| 0
|-
| date_modified_column
| 0
|-
| date_created_column
| 0
|-
| attributes_column
| 0
|-
| sort
| name
|-
| ascending
| 1
|}

For example, search for ABC AND 123, from the starting offset of 0, displaying only the first 100 results, sorted by size descending:
<pre>
http://localhost/?search=ABC+123&offset=0&count=100&sort=size&ascending=0
</pre>

==Change the default HTTP files==
You can customize the layout of the server, the icon, folder image, file image, everything logo, sort up image, sort down image and up one folder image.

<ul>
*Create the folder 
<pre>
HTTP Server
</pre>
in:
<pre>
%APPDATA%\Everything
</pre>
*If [[support/everything/options#store_settings_and_data_in_appdata_everything|Store settings and data in %APPDATA%\Everything]] is disabled, the HTTP Server folder must be created in the same location as your Everything.exe.
*In '''''Everything''''', from the '''Tools''' menu, click '''Start HTTP Server'''.
*Download the following files to your HTTP Server folder:
*[[/Everything-HTTP.Server.Files.zip]]
*Edit these files in the HTTP Server folder in your "''Everything''" installation folder.
*Everything will load these files instead of the embedded HTTP server files.
*Hold Shift and press the reload button to force your browser to refresh.
</ul>

==Change the default HTTP server page==
To change the default HTTP server page:
<ul>
*In '''''Everything''''', from the '''Tools''' menu, click '''Options'''.
*Click the '''HTTP Server''' tab.
*Set the '''Default page''' to your custom page.
</ul>

==Custom strings==
To customize the builtin HTTP server strings:
<ul>
*Download the HTTP server strings template: [[/http_server_strings.zip|http_server_strings.zip]]
*Extract the http_server_strings.ini file to: %APPDATA%\Everything\HTTP server
*Make any changes to your http_server_strings.ini
*In Everything, type in the following search and press ENTER:
<pre>
/http_server_strings=C:\Users\<user>\AppData\Roaming\Everything\HTTP Server\http_server_strings.ini
</pre>
where <user> is your username.
*Restart the HTTP Server:
<ul>
*In '''''Everything''''', from the '''Tools''' menu, click '''Options'''.
*Click the '''HTTP Server''' tab.
*Uncheck '''Enable HTTP Server'''.
*Click '''Apply'''.
*Check '''Enable HTTP Server'''.
*Click '''OK'''.
</ul>
</ul>

==Security==
Every file and folder indexed by Everything can be searched and downloaded via the web server.

To disable file downloading:
<ul>
*In '''''Everything''''', from the '''Tools''' menu, click '''Options'''.
*Click the '''HTTP Server''' tab.
*Uncheck '''allow file download'''.
</ul>

See [[support/everything/http#disable_http_server|Disable HTTP Server]] to remove the HTTP server options and prevent the HTTP server from starting.

==Disable HTTP Server==
To disable the HTTP server:
<ul>
*Exit Everything (right click the Everything system tray icon and click Exit)
*Open your Everything.ini in the same location as your Everything.exe
*Change the following line:
<pre>
allow_http_server=1
</pre>
to:
<pre>
allow_http_server=0
</pre>
*Save changes and restart Everything.
</ul>

==Trouble shooting==
How do I fix the Unable to start HTTP server: bind failed 10048 error?

There is already another service running on port 80.
Please try changing the Everything HTTP server port to another port.

To change the HTTP server port:
<ul>
*In '''Everything''', from the '''Tools '''menu, click '''Options'''
*Click the '''HTTP server''' tab.
*Change''' Listen on port''' to a new port, for example 8080.
*Click '''OK'''
</ul>

Please make sure to specify this port when connecting to the web server with your web browser, for example:
<pre>
http://localhost:8080
</pre>

==Range request==
Everything supports range requests for streaming support.

==See also==
<ul>
*[[support/everything/multiple instances|Multiple Instances]].
*[[support/everything/ini#http|HTTP Server Everything.ini options]].
*[[support/everything/options#http server|HTTP Server options]].
*[[http://en.wikipedia.org/wiki/HTTP]]
</ul>
