Web Servers

最后更新于:2022-04-01 04:24:14

# Web Servers It is typical to use the front-controller pattern to funnel appropriate HTTP requests received by your web server to a single PHP file. The instructions below explain how to tell your web server to send HTTP requests to your PHP front-controller file. ## Apache configuration Ensure your `.htaccess` and `index.php` files are in the same public-accessible directory. The`.htaccess` file should contain this code: ~~~ RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L] ~~~ Make sure your Apache virtual host is configured with the `AllowOverride` option so that the`.htaccess` rewrite rules can be used: ~~~ AllowOverride All ~~~ ## Nginx configuration This is an example Nginx virtual host configuration for the domain `example.com`. It listens for inbound HTTP connections on port 80\. It assumes a PHP-FPM server is running on port 9000\. You should update the `server_name`, `error_log`, `access_log`, and `root` directives with your own values. The `root` directive is the path to your application’s public document root directory; your Slim app’s `index.php` front-controller file should be in this directory. ~~~ server { listen 80; server_name example.com; index index.php; error_log /path/to/example.error.log; access_log /path/to/example.access.log; root /path/to/public; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; } } ~~~ ## HipHop Virtual Machine Your HipHop Virtual Machine configuration file should contain this code (along with other settings you may need). Be sure you change the `SourceRoot` setting to point to your Slim app’s document root directory. ~~~ Server { SourceRoot = /path/to/public/directory } ServerVariables { SCRIPT_NAME = /index.php } VirtualHost { * { Pattern = .* RewriteRules { * { pattern = ^(.*)$ to = index.php/$1 qsa = true } } } } ~~~ ## IIS Ensure the `Web.config` and `index.php` files are in the same public-accessible directory. The`Web.config` file should contain this code: ~~~ <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="slim" patternSyntax="Wildcard"> <match url="*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration> ~~~ ## lighttpd Your lighttpd configuration file should contain this code (along with other settings you may need). This code requires lighttpd >= 1.4.24. ~~~ url.rewrite-if-not-file = ("(.*)" => "/index.php/$0") ~~~ This assumes that Slim’s `index.php` is in the root folder of your project (www root).
';