• Apache url 重写


    重写配置

    1、打开 apache 里httpd.conf(通常是在/etc/httpd/conf目录里)

    2、找到   #LoadModule rewrite_module modules/mod_rewrite.so  去掉前面的  #

        如果在 httpd 中查看是否调用  rewrite_module  通过   httpd -M   的参数来查看; 如果发现有  rewrite_module (shared)  ,说明已经被调用了。

     于大多数发行版来说,Apache 2的模块一般是位于如下的两个位置  /usr/lib/apache2/modules  或   /usr/lib/httpd/modules 

    3、找到 AllowOverride None 改成 AllowOverride All , 有两个全部改掉
         AllowOverride 的参数设置为ALL,表示整台服务器上都支持URL规则重写。Apache 服务器要读每个网站下目录下的 .htaccess 文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则就不会有任何效果。设置   DocumentRoot  的   Directory (整台服务器): 

    <Directory "DocumentRoot所设置的路径">
    # 比如我们把DocumentRoot的路径改为了 /,那我们也要把Directory做针对性的行为设置也要改成这个路径。
    <Directory />
    Options FollowSymLinks
    #AllowOverride None 
    AllowOverride ALL
    Order allow,deny
    Allow from all
    </Directory>

    4、设置单个站点 ,httpd-vhosts.conf / vhosts.conf  文件

    <VirtualHost *:80>
    DocumentRoot "F:\phpStud\PHPTutorial\WWW\tp\public"
    ServerName tp.com
    ServerAlias gohosts.com
    <Directory "F:\phpStud\PHPTutorial\WWW\tp\public">
    Options FollowSymLinks ExecCGI
    AllowOverride All   # 如果此站点不开启url 重写 AllowOverride  Noll,默认与全局设置一致
    Order allow,deny
    Allow from all
    Require all granted
    </Directory>
    </VirtualHost>

    5、重启apache

    重写规则

    网站根目录下创建  .htaccess  文件

    1) R[=code](force redirect)  #强制外部重定向
    强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
    2) F(force URL to be forbidden)  #禁用URL,返回403HTTP状态码。
    3) G(force URL to be gone)  # 强制URL为GONE,返回410HTTP状态码。
    4) P(force proxy) # 强制使用代理转发。
    5) L(last rule) # 表明当前规则是最后一条规则,停止分析以后规则的重写。
    6) N(next round) # 重新从第一条规则开始运行重写过程。
    7) C(chained with next rule) # 与下一条规则关联
    如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
    8) T=MIME-type(force MIME type) # 强制MIME类型
    9) NS (used only if no internal sub-request) # 只用于不是内部子请求
    10) NC(no case) # 不区分大小写
    11) QSA(query string append) # 追加请求字符串
    12) NE(no URI escaping of output) # 不在输出转义特殊字符
    例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] # 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
    13) PT(pass through to next handler) # 传递给下一个处理
    例如:
    RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
    Alias /def /ghi
    14) S=num(skip next rule(s)) # 跳过num条规则
    15) E=VAR:VAL(set environment variable) # 设置环境变量

    HTTP 跳转至 HTTPS 示例

    RewriteEngine on  # 开启重写
    RewriteCond %{SERVER_PORT} !^443$  # 如果访问的不是 443 端口
    RewriteCond %{REQUEST_URI} !^/tz.php  #如果访问的url 不是 /tz.php
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]     # 跳转到  https://域名+$1

    HTTP 80 强制转 HTTPS

    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80  # 如果访问的是80 端口
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]  # 跳转 https 

    强制301重定向 HTTPS

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /  # 表示项目根目录
    RewriteCond %{SERVER_PORT} !^443$  # 如果访问的不是443 端口
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]  # 重定向到 301
    </IfModule>

    访问不是一个文件也不是一个目录跳转指定页面

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f # 如果请求的不是文件
    RewriteCond %{REQUEST_FILENAME} !-d # 如果请求的不是目录
    RewriteRule ^(.*)$ http://other.kevin.com/$1 [R]  #跳转到指定页面

    图片防盗链

    RewriteCond   %{HTTP_REFERER}   !^$ # 如果上个页面地址为空
    RewriteCond    %{HTTP_REFERER}   !^http://(www\.)?example\.com/   [NC]    #或者不是来自你自己的域名
    RewriteRule   \.(gif|jpg|png)$   - [F]  #禁止访问

    如果文件不存在重定向到404页面

    RewriteCond   %{REQUEST_FILENAME}   !-f  # 如果访问的不是一个文件
    RewriteCond   %{REQUEST_FILENAME}   !-d  #如果访问的不是一个目录
    RewriteRule   .?   /404.php   [L]   #跳转到网站根目录
    # 也可携带参数
    #RewriteRule ^/?(.*)$ /404.php?url=$1 [L]

    重命名目录

    RewriteRule   ^/?old_directory/([a-z\.]+)$   new_directory/$1   [R=301,L]

    相关文章  :https://www.cnblogs.com/kynewu/p/9088550.html

    https://cloud.tencent.com/developer/article/1348412

    apache 服务器 忽略大小写

    1、查看系统有无mod_speling.so模块,路径:/etc/httpd/modules,如果没有就从别处下载一个;

    2、加载此模块   vi /etc/httpd/conf/httpd.conf ,添加如下行,如果已经存在取消 ; 注释:  

     LoadModule speling_module modules/mod_speling.so
    <IfModule mod_speling.c>
      CheckSpelling On
      CheckCaseOnly On
    </IfModule>

    3、重启httpd服务。

    nginx  url 重写与 apache url 重写的转换

  • 相关阅读:
    active learning
    PLS-00201: identifier 'SYS.DBMS_CUBE_EXP' must be declared
    浅谈防火墙
    yum安装nginx错误处理
    简单的SQL注入
    mysql之查询语句练习题
    Linux权限和用户管理
    Linux文件及目录查找命令~~续集
    linux文件及目录查找命令
    linux文件管理练习题
  • 原文地址:https://www.cnblogs.com/xuey/p/10109073.html
Copyright © 2020-2023  润新知