Apache-2.2

如何找出網站程式碼所在的位置?

  • March 8, 2016

事實:

  • 有一個網站
  • 該網站可通過 www.example.org 訪問
  • 有一個 EC2 實例很可能保留該網站
  • 伺服器是 Apache
  • 伺服器作業系統是 Ubuntu
  • 我擁有對伺服器的完全訪問權限(和 sudo 權限)
  • 伺服器是一個巨大的混亂

問題是我不知道在哪裡 - 簡單地說 - 找到載入的 index.html/index.php。

如何確定在哪裡可以找到網站的 PHP 和 HTML 程式碼?是否有解決這個問題的系統方法?

首先,您應該檢查伺服器上託管了哪些網站

# apachectl -t -D DUMP_VHOSTS

然後,當您找到一個站點時,請檢查選項 DocumentRoot 的相應配置文件。例如

# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
        default server 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
        port 80 namevhost 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
        port 80 namevhost gl-hooks.example.net (/etc/httpd/conf.d/hooks.conf:1)
                alias example.net
                alias www.example.net

您想知道網站 example.net 所在的位置

# grep DocumentRoot /etc/httpd/conf.d/hooks.conf
   DocumentRoot /vhosts/gl-hooks.example.net/

# cd /vhosts/gl-hooks.example.net/
# ls -la
total 4484
drwxr-xr-x  6 apache apache    4096 Feb 10 11:59 .
drwxr-xr-x 14 root   root      4096 Feb 23 08:54 ..
-rw-r--r--  1 root   root      1078 Dec 19 09:31 favicon.ico
-rw-r--r--  1 apache apache     195 Dec 25 14:51 .htaccess
-rw-r--r--  1 apache apache      98 Dec  7 10:52 index.html

還應該注意別名和重定向/重寫

您還應該注意任何別名指令。例如使用以下設置

<VirtualHost *:80>
  ServerName example.net
  ServerAlias www.example.net
  ...
  DocumentRoot /vhosts/default/public_html/
  Alias /api/ /vhosts/default/public_api/
  ...
</VirtualHost>

當您訪問http://example.net/some.file.html - apache 將在 /vhosts/default/public_html/ 中查看文件,同時使用http://example.net/api/some.file .html文件將被查看 /vhosts/default/public_api/。

重寫/重定向怎麼樣,尤其是程式(當重定向由一些 php 程式碼觸發時),我認為沒有簡單的方法可以找到這種情況。

引用自:https://serverfault.com/questions/760461