Маршрутизация всех данных в один файл PHP, чтобы определить, как его разобрать, дает вам больше контроля над тем, как данные обслуживаются, но также вредит вашей производительности.
метод должен был бы поместить следующее в ваш файл .htaccess:
RewriteEngine On
RewriteBase/
RewriteRule (.*) parse-request.php
Это будет посылать запрос непосредственно разобрать-request.php. Что еще более важно, поскольку запрос не передается как переменная GET (например, parse-request.php?request=my/webapp/index.php
), немного сложнее обмануть ваш сервер и немного сложнее для людей осознать, что есть даже фронт-парсинг.
разбора request.php должны затем включить что-то вроде следующего:
<?php
$url = parse_url($_SERVER["REQUEST_URI"]);
$extension = substr($url["path"], strrchr($url["path"], '.')+1);
switch($extension){
case "zip": $ctype = "application/zip"; break;
case "jpeg":
case "jpg": $ctype = "image/jpg"; break;
case "php":
case "html": $ctype = "text/html"; break;
case "css": $ctype = "text/css"; break;
case "js": $ctype = "text/javascript"; break;
}
header("Content-type: ".$ctype);
/*
Now determine how to display each one
*/
if($extension == "js"){
// minify and output
} else if ($extension == "php"){
require($url["path"]); // run the PHP file
// Note that certain variables in PHP believe you are in the subdirectory of parse-request.php
// You have to account for this in your webapp
} else...
...
...
}
?>
Это основная идея. Конечно, вы можете бесконечно расширять это, говоря такие вещи, как «Если пользователь вошел в систему, обслуживайте изображение. Если нет, откройте« Зарегистрироваться для просмотра изображения ». Хотя, как уже было сказано, это вызывает много накладных расходов и замедляет ваш сайт. Лучший способ состоит в том, чтобы иметь несколько способов анализа любой информации, которую вы на самом деле хотите изменить, а не единственный способ разобрать ВСЕ. Например, с вашего файла .htaccess:
RewriteEngine On
RewriteBase/
RewriteRule (.*).js minify-js.php
RewriteRule (.*).css parse-css.php
RewriteRule secretimages/(.*).jpg hide-images.php
RewriteRule profile.html are-you-logged-in.php
Разделив на работу среди различных сценариев вы работать только то, что необходимо, уменьшая накладные расходы много. Кроме того, таким образом, любые изображения, которые не находятся в папке «secretimages», могут быть напрямую переданы Apache без необходимости загрузки парсера PHP. В любом случае, любой контент, который вы только что прошли.
Главное, однако, состоит в том, что путем выбора отдельных элементов для разбора по-разному вам не нужно перекодировать любые веб-приложения. Я гарантирую, что MediaWiki или что-то будет NOT, как и все их параметры URI, которые изменяются интерфейсным синтаксическим анализатором.
Возможный дубликат [url rewriting index.php] (http://stackoverflow.com/questions/2652701/url-rewriting-index-php) - используйте 'mod_rewrite' – Gordon
, возможно, связанный с [Включить' mod_deflate' для отправки кодирование содержимого gzip] (http://stackoverflow.com/questions/878068/enable-mod-deflate-to-send-content-encoding-gzip) – Gordon
Итак, даже если файл существует, вы хотите, чтобы произошла переадресация? – webbiedave