Created
September 10, 2021 18:54
-
-
Save gphg/373acc3b4319eebb3b5f3e412619649e to your computer and use it in GitHub Desktop.
Fix nasty PHP FastCGI Error: No input file specified. Tested on XAMPP Windows and Debian with LAMP stack.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Disable directory browsing | |
Options All -Indexes | |
# ---------------------------------------------------------------------- | |
# Rewrite engine | |
# ---------------------------------------------------------------------- | |
# Turning on the rewrite engine is necessary for the following rules and features. | |
# FollowSymLinks must be enabled for this to work. | |
<IfModule mod_rewrite.c> | |
Options +FollowSymlinks | |
RewriteEngine On | |
# Fix PHP FastCGI Error: No input file specified. | |
# Because you are lazy bastard that won't added "?" between "index.php" and "/". | |
<IfModule mod_fcgid.c> | |
RewriteRule .* - [E=UNDER_FASTCGI:?] | |
</IfModule> | |
# If you installed CodeIgniter in a subfolder, you will need to | |
# change the following line to match the subfolder you need. | |
# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase | |
# RewriteBase / | |
# Redirect Trailing Slashes... | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteCond %{REQUEST_URI} (.+)/$ | |
RewriteRule ^ %1 [L,R=301] | |
# Rewrite "www.example.com -> example.com" | |
RewriteCond %{HTTPS} !=on | |
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] | |
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] | |
# Checks to see if the user is attempting to access a valid file, | |
# such as an image or css document, if this isn't true it sends the | |
# request to the front controller, index.php | |
# RewriteCond %{THE_REQUEST} ^/robots\.txt$ [OR] | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule ^([\s\S]*)$ index.php%{ENV:UNDER_FASTCGI}/$1 [L,NC,QSA] | |
# Ensure Authorization header is passed along | |
RewriteCond %{HTTP:Authorization} . | |
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] | |
</IfModule> | |
<IfModule !mod_rewrite.c> | |
# If we don't have mod_rewrite installed, all 404's | |
# can be sent to index.php, and everything works as normal. | |
ErrorDocument 404 index.php | |
</IfModule> | |
<IfModule mod_headers.c> | |
Header unset X-Powered-By | |
Header always unset X-Powered-By | |
</IfModule> | |
# Disable server signature start | |
ServerSignature Off | |
# Disable server signature end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This .htaccess file is a modification of CodeIgniter 4's default .htaccess. I only added these lines:
Then modify the front end:
Tested on CodeIgniter 3 too. Likely going to work on any PHP application with FastCGI enabled and require
?
betweenindex.php
and/
.Explanation:
<IfModule mod_fcgid.c>
: just other module, only execute under this tag if module is enabled.RewriteRule .* - [E=UNDER_FASTCGI:?]
: it assigns?
into a variable${ENV:UNDER_FASTCGI}
. ${ENV:UNDER_FASTCGI} value is either?
or blank.