Вы не говорите, какое программное обеспечение веб-сервера Вы выполняете, но, большинство серверов поддерживает vhosts.
С Apache создайте vhost
ServerName www.mydomain.com ServerAlias mysite.sites.com DocumentRoot /usr/www/mydomain.com
Это vhost ответит на IPADDRESS на запросы на www.mydomain.com и mysite.sites.com пока DNS на тех двух точках записей в Вашем IPADDRESS, это будет очевидно для пользователя.
Необходимо удостовериться, что приложение ссылается на заголовок HTTP_HOST, который требуют, и не использует жесткие ссылки на www.mydomain.com
Это имеет смысл?
Andrew
Вот что говорится в документации:
Эта переменная равна пути к файлу для текущего запроса, сформированного из директив root или alias и URI запроса;
Эта переменная равна значению директивы root для текущего запроса;
Эта переменная равна запросу URI или, если URI завершается прямой косой чертой, то запросу URI плюс имя индексного файла, заданного параметром fastcgi_index. Можно использовать эту переменную вместо SCRIPT_FILENAME и PATH_TRANSLATED, используемых, в частности, для определения имени скрипта в PHP.
Как здесь написано, есть по крайней мере разница при использовании fastcgi_index или fastcgi_split_path_info . Может есть еще ... это то, что я знаю прямо сейчас.
Вы получаете запрос / info /
и имеете следующую конфигурацию:
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
SCRIPT_FILENAME
будет равно / home / www /scripts/php/info/index.php
, но при использовании $ request_filename
это будет просто / home / www / scripts / php / info /
.
конфигурация fastcgi_split_path_info
также важна. Дополнительную помощь см. Здесь: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info
Я предполагаю, что эти строки были взяты из файла 'fastcgi_params'.
Обычно вы не получаете никаких ошибок, когда дело касается SCRIPT_FILENAME
, потому что он уже определен, когда вы определили корневую директиву в своем файле vhost. Поэтому, если вы не определили это явно в вашем файле vhost с помощью fastcgi_param
, значение SCRIPT_FILENAME
будет взято из корневой директивы .. Но ОДИН ВАЖНЫЙ НОМЕР ЗДЕСЬ. Существует еще одна переменная, необходимая nginx для отправки запросов на php-сервер, это $ fastcgi_script_name
, и вы должны правильно определить ее, чтобы избежать повторяющихся URL-адресов и ошибок с uri, заканчивающимися косой чертой.
Заключение :
Чтобы все работало очень хорошо,
Я рекомендую использовать $ request_filename
для SCRIPT_FILENAME
.
root
директиву $ document_root $ fastcgi_script_name
равно $ request_filename
.
псевдоним
директива $ document_root $ fastcgi_script_name
вернет неправильный путь, потому что $ fastcgi_script_name
- это путь URL-адреса, а не путь, относящийся к $ document_root
.
Если у вас есть конфигурация
location /api/ {
index index.php index.html index.htm;
alias /app/www/;
location ~* "\.php$" {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
/ api / test.php
: $ document_root $ fastcgi_script_name
== /app/www//api/testing.php
$ request_filename
== / app / www /testing.php[12154 sizesRequest / api /
:
$ document_root $ fastcgi_script_name
== /app/www//api/index.php
$ request_filename
== /app/www/index.php
И если вы используете $ req uest_filename
, вы должны установить индекс с помощью директивы index
, fastcgi_index
не будет работать.