点我
点我
文章目录
  1. 1 使用的命令
  2. 2 使用方法
    1. Linux下
  • 3 最后的结果
  • ubuntu下设置apache的目录映射

    好吧,我的博客一不小心又荒废下来了,话不多说,进入正文.

    最近的项目一直在忙,发布代码的时候遇到一个麻烦事,由于所有项目代码都放在服务器的根目录,也就是/var/www/html下;然后还有一个api的页面,我放在一个api文件夹中,然后把整个api文件夹放在html目录下.由于每次发布代码都是替换整个根目录html下的文件,你懂的,我每次发布项目代码后,api就没了,需要我单独解压,再复制,blablabla,总之一个字,.
    我突然想起来,phpmyadmin安装后就不在网站的根目录,但是访问的时候我却还是直接在ip后面跟目录,比如http://127.0.0.1/phpmyadmin,这货应该是用了一个映射,我照着这个样子搞一个,不就行了,说干就干.

    1 使用的命令

    Alias 这个是这次主要使用的命令,使用的方法很简单,如下所示

    1
    Alias /api /home/ch/api

    意思就是如果你在ip后面添加/api后缀,也就是你在浏览器访问http://127.0.0.1/api,那么实际就会访问到/home/ch/api目录下

    2 使用方法

    Linux下

    由于我用的是ubuntu,所以具体说下ubuntu下怎么用.
    根据在Ubuntu上安装LAMP服务器并简单配置,这篇文章中关于phpmyadmin的设置部分,以下为摘抄

    1
    2
    3
    4
    5
    6
    7
    8
    配置Apache服务器
    如果此时在浏览器中输入http://localhost/phpmyadmin,会提示404错误
    此时应该进行简单的配置,将phpMyAdmin的配置文件,复制到Apache2下

    cp /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.conf
    然后重启Apache服务器

    service apache2 restart

    我们得到启发,本来phpmyadmin也是不在html根目录下的,上面的操作做了什么呢?
    我们打开/etc/apache2/conf-enabled/phpmyadmin.conf这个文件看看

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    # phpMyAdmin default Apache configuration

    Alias /phpmyadmin /usr/share/phpmyadmin

    <Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_php5.c>
    AddType application/x-httpd-php .php

    php_flag magic_quotes_gpc Off
    php_flag track_vars On
    php_flag register_globals Off
    php_admin_flag allow_url_fopen Off
    php_value include_path .
    php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
    php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/
    </IfModule>

    </Directory>

    # Authorize for setup
    <Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authn_file.c>
    AuthType Basic
    AuthName "phpMyAdmin Setup"
    AuthUserFile /etc/phpmyadmin/htpasswd.setup
    </IfModule>
    Require valid-user
    </Directory>

    # Disallow web access to directories that don't need it
    <Directory /usr/share/phpmyadmin/libraries>
    Order Deny,Allow
    Deny from All
    </Directory>
    <Directory /usr/share/phpmyadmin/setup/lib>
    Order Deny,Allow
    Deny from All
    </Directory>

    看看这个文件的第一行,soga,原来他用的也是Alias命令,接下来我们继续往下走,下面的代码是什么意思呢?下面的代码是用来设置文件目录的权限的,就是<Directory>标签里面的内容.
    关于这里的设置,我们可以参考apache官网上的描述.简而言之
    Order Deny,Allow其实是Allow优先,举个例子

    1
    2
    3
    Order Deny,Allow
    Allow from All
    Deny from All

    由于Deny规则在Allow之前(Order规定的),所以先Deny所有的请求,然后Allow规则在其后,最后的结果就是所有的人都可以随意访问.假设你要对访问进行限制,建议按照下面这样设置

    1
    2
    3
    Order Deny,Allow
    Allow from 192.168.1.122
    Deny from All

    也就是指允许ip为192.168.1.122的用户去访问,其他的用户都会被Deny

    3 最后的结果

    结合上面的分析,给出我最后的结果

    1
    2
    3
    4
    5
    6
    7
    8
    Alias /api /var/www/api
    <Directory /var/www/api>
    Options FollowSymLinks Includes -Indexes

    AllowOverride None
    Order allow,deny
    allow from all
    </Directory>

    这里的-Indexes选项的意思是,不要列出目录
    打完收工

    支持一下
    扫一扫,试试看
    • 微信扫一扫
    • 支付宝扫一扫