Premature end of script headers

This is a pretty common error appearing in the Apache servers… along with the disgusting Error 500 – Internal server error on the browser. Usually the error indicates that it was unable to send necessary header information correctly.

What makes the problem terrible – it does not explain much of the cause. The best way to solve this problem is to find your apache Log and examine it. Usually the log file is available in /var/log/apache2/error.log file in Linux.

Examine the file for a detailed description. For example, if the error message is associated with preceding –

(13)Permission denied: exec of ‘<location of  the file>’ failed

– message, then your script is not marked as executable. Give file permission to run the file as executable, and your problem will be solved.

What if you can’t find the LOG file?

If you’re not allowed to access the log files in any server, then what to do? You may check the apache.conf file for the location of the log file (usually all hosting providers give access to error logs, you just need to find our where the file resides.) Ask your hosting provider for more help.

Regular Expression (regex) Tutorials – 2

Source of Current Topic:

Metacharacters Defined

MChar Definition
^ Start of a string.
$ End of a string.
. Any character (except \n newline)
| Alternation.
{…} Explicit quantifier notation.
[…] Explicit set of characters to match.
(…) Logical grouping of part of an expression.
* 0 or more of previous expression.
+ 1 or more of previous expression.
? 0 or 1 of previous expression; also forces minimal matching when an expression might match several strings within a search string.
\ Preceding one of the above, it makes it a literal instead of a special character. Preceding a special matching character, see below.

Metacharacter Examples

Pattern Sample Matches
^abc abc, abcdefg, abc123, …
abc$ abc, endsinabc, 123abc, …
a.c abc, aac, acc, adc, aec, …
bill|ted ted, bill
ab{2}c abbc
a[bB]c abc, aBc
(abc){2} abcabc
ab*c ac, abc, abbc, abbbc, …
ab+c abc, abbc, abbbc, …
ab?c ac, abc
a\sc a c

Character Escapes http://tinyurl.com/5wm3wl

Escaped Char Description
ordinary characters Characters other than . $ ^ { [ ( | ) ] } * + ? \ match themselves.
\a Matches a bell (alarm) \u0007.
\b Matches a backspace \u0008 if in a []; otherwise matches a word boundary (between \w and \W characters).
\t Matches a tab \u0009.
\r Matches a carriage return \u000D.
\v Matches a vertical tab \u000B.
\f Matches a form feed \u000C.
\n Matches a new line \u000A.
\e Matches an escape \u001B.
40 Matches an ASCII character as octal (up to three digits); numbers with no leading zero are backreferences if they have only one digit or if they correspond to a capturing group number. (For more information, see Backreferences.) For example, the character 40 represents a space.
\x20 Matches an ASCII character using hexadecimal representation (exactly two digits).
\cC Matches an ASCII control character; for example \cC is control-C.
\u0020 Matches a Unicode character using a hexadecimal representation (exactly four digits).
\* When followed by a character that is not recognized as an escaped character, matches that character. For example, \* is the same as \x2A.

Character Classes http://tinyurl.com/5ck4ll

Char Class Description
. Matches any character except \n. If modified by the Singleline option, a period character matches any character. For more information, see Regular Expression Options.
[aeiou] Matches any single character included in the specified set of characters.
[^aeiou] Matches any single character not in the specified set of characters.
[0-9a-fA-F] Use of a hyphen (–) allows specification of contiguous character ranges.
\p{name} Matches any character in the named character class specified by {name}. Supported names are Unicode groups and block ranges. For example, Ll, Nd, Z, IsGreek, IsBoxDrawing.
\P{name} Matches text not included in groups and block ranges specified in {name}.
\w Matches any word character. Equivalent to the Unicode character categories [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \w is equivalent to [a-zA-Z_0-9].
\W Matches any nonword character. Equivalent to the Unicode categories [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \W is equivalent to [^a-zA-Z_0-9].
\s Matches any white-space character. Equivalent to the Unicode character categories [\f\n\r\t\v\x85\p{Z}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \s is equivalent to [ \f\n\r\t\v].
\S Matches any non-white-space character. Equivalent to the Unicode character categories [^\f\n\r\t\v\x85\p{Z}]. If ECMAScript-compliant behavior is specified with the ECMAScript option, \S is equivalent to [^ \f\n\r\t\v].
\d Matches any decimal digit. Equivalent to \p{Nd} for Unicode and [0-9] for non-Unicode, ECMAScript behavior.
\D Matches any nondigit. Equivalent to \P{Nd} for Unicode and [^0-9] for non-Unicode, ECMAScript behavior.
0 people like this post.


Redirecting URL by Apache

Create a .htaccess file in the directory where you want to perform the task. These settings will be applicable to sub-directories also 😉

in the .htaccess file, type the following:
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]+)/([^/]+)/([0-9]+)\.html$ /index.php?maindirectory=$1&subdirectory=$2&articleID=$3

The first set of parentheses will equal your first variable “$1”, the second set of parentheses will equal your second variable “$2”, etc.

The following example will not actually work because of the regular expressions however I’m putting it in here for example:

(.*)/(.*)/(.*) = $1/$2/$3

Side-Note: the reason the above example would fail with the regular expression is that the first (.*) will grab everything including the “/”. That is why I used ([^/]+) in the real example, it says grab everything but “/”.

Source

 

Useful Apache .htaccess Tutorials!

Disable Directory Browsing

By default, Apache allows your visitors to browse through a directory if it does not has an index file. However, you can turn if off by following method:

  • Open your .htacces file
  • Look for Options Indexes
  • If Options Indexes exists modify it to Options -Indexes or,
  • add Options -Indexes as a new line

That’s all!

Changing the index file name

The index file is the file that gets displayed automatically when a user browses to a directory. Historically, the index file is called index.html or index.htm. On a PHP powered site, you may want your index file to be named index.php. This can be accomplished by putting the following line in your .htaccess file:

 DirectoryIndex index.php index.html 

The directive above instructs Apache to use index.php as the index file if it exists, otherwise it should look for a file named index.html. If neither file exists in the requested directory, the user will usually get a directory listing.

Reference

Denying access to a directory

Sometimes, there may be directories on your website that the user shouldn’t be able to directly request files from. For example, you may have a directory that stores data files for your scripts, or a set of PHP includes. Placing the lines below in the .htaccess file for that directory will block direct requests for those files:

Order Deny,Allow
Deny from all 

The first line ensures that the deny directive is evaluated before any allow directives that may have been defined elsewhere in the directory hierarchy.