• URL RewriteRule在httpd.conf和.htaccess中的不同点


    相信熟悉 Web Server 的人一定熟悉 Apahce;相信熟悉Apahce的人一定知道 URL Rewrite。Apache 的 mod_rewrite 模块,可以帮助人们构造出各种各样美化后的URL。在 Apache 中使用 URL Rewrite,可以有多种方式:一种是直接在 httpd.conf 中添加相应 rewriterule(重写规则),另一种是在网站根目录下的 .htaccess 中添加 rewriterule(重写规则)。但是,需要注意的是,在这两个文件中添加到URL重写规则略有不同,而这些不同,对于不熟悉的人来说,很可能会困扰许久。

    在Httpd.conf中:

    (1)Request URI 的开头必须以斜线开始;

    (2)在寻找 Cache 文件的时候,必须在开头加上斜线;

    (3)在使用-f或者!-f的时候,必须在开头加上斜线。

    在.htaccess中,情况完全相反:

    (1)Request URI 的开头不能有斜线;

    (2)在寻找 Cache 文件的时候,不能在开头加上斜线;

    (3)在使用-f或者!-f的时候,不能在开头加上斜线。

    简单而言,就是在httpd.conf中,重写前后的URL在使用绝对路径时需要添加斜线“/”,表示从网站根目录开始;而在.htaccess中,则不需要。以下两个简单的例子:

    httpd.conf

    RewriteRule ^/$ /cache/index.html [QSA]
    RewriteRule ^/([^.]+)$ /cache/$1.html [QSA]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

    .htaccess

    RewriteRule ^$ cache/index.html [QSA]
    RewriteRule ^([^.]+)$ cache/$1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

    或许还有更多的不同,正在实践中。

  • 相关阅读:
    力扣算法题—091解码
    力扣算法题—090子集2
    力扣算法题—089格雷编码
    力扣算法题—088合并两个有序数组
    HDU 1509 Windows Message Queue
    HDU 1241 Oil Deposits
    HDU 1096 A+B for Input-Output Practice (VIII)
    HDU 1108 最小公倍数
    HDU 1106 排序
    HDU 1003 Max Sum * 最长递增子序列(求序列累加最大值)
  • 原文地址:https://www.cnblogs.com/kimshen/p/15608560.html
Copyright © 2020-2023  润新知