Apache 2.4:httpd conf 中别名的正则表达式

Posted

技术标签:

【中文标题】Apache 2.4:httpd conf 中别名的正则表达式【英文标题】:Apache 2.4: RegEx for Alias in httpd conf 【发布时间】:2014-12-15 15:37:33 【问题描述】:

下面是我在 apache 2.4 httpd conf 文件中的别名 对于每个版本,我们都会更新版本号,并尝试使用正则表达式来捕获更改,而不是每次都手动更改版本号

例如,我们当前的版本是 Passport14200(14 是年份,2 是 2014 年的第二个版本)我们今年的下一个版本将是 Passport14300(2014 年的第三个版本),我们 2015 年的第一个版本将是 Passport15100

这就是我的 httpd conf 文件现在的样子

Alias /Passport14200 C:/Passport/tomcat/webapps/?Passport
<Directory C:/DC/Passport/tomcat/webapps/Passport>
    Require all denied
    <FilesMatch "\.(gif|jpe?g|jpg|png|js|css|ico)$">
        Require all granted
    </FilesMatch>

    ExpiresActive On
    ExpiresByType image/gif "access plus 10 years"
    ExpiresByType image/png "access plus 10 years"
    ExpiresByType text/css "access plus 10 years"
    ExpiresByType text/javascript "access plus 10 years"
    ExpiresByType application/javascript "access plus 10 years"
</Directory>

我想知道有没有办法使用正则表达式来别名,以便它捕获 Passport[\d5]?

我是正则表达式的新手,有人可以帮我解决这个问题吗?

【问题讨论】:

为什么还需要别名?你听说过mod_rewrite 吗?有AliasMatch指令httpd.apache.org/docs/2.4/mod/mod_alias.html#aliasmatch @Cheery 我对 apache conf 文件完全陌生,这是我的第一个任务,所以我不知道 mod_rewrite 以及从哪里开始这个任务。您能否给我一个在我的场景中使用 mod_rewrite / AliaMatch 的示例,我尝试查看示例,但我无法与我的案例相关,因为所有示例都是字符串而不是数字 首先你要详细解释一下——你是想让别名指向同一个文件夹还是每个别名指向自己的文件夹? 每个别名都指向同一个文件夹C:/Passport/tomcat/webapps/Passport 【参考方案1】:

每个别名都指向同一个文件夹 C:/DC/Passport/tomcat/webapps/Passport

这会将任何以 /Passport 开头的别名匹配到同一文件夹。

AliasMatch ^/Passport.* C:/DC/Passport/tomcat/webapps/Passport
<Directory C:/DC/Passport/tomcat/webapps/Passport>
    Require all denied
    <FilesMatch "\.(gif|jpe?g|jpg|png|js|css|ico)$">
        Require all granted
    </FilesMatch>

    ExpiresActive On
    ExpiresByType image/gif "access plus 10 years"
    ExpiresByType image/png "access plus 10 years"
    ExpiresByType text/css "access plus 10 years"
    ExpiresByType text/javascript "access plus 10 years"
    ExpiresByType application/javascript "access plus 10 years"
</Directory>

如果您想确保Passport 之后只有 5 位数字 - 请使用 AliasMatch ^/Passport\d5 C:/DC/Passport/tomcat/webapps/Passport

【讨论】:

切换到 AliasMatch 后,我无法从文件系统目录访问资源,您能帮我解决我的问题吗***.com/questions/26912490/…

以上是关于Apache 2.4:httpd conf 中别名的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

即使在应用程序部署之后,如何永久编辑httpd.conf以便在Apache 2.4中进行更改?

Apache 2.4 忽略 httpd-vhosts.conf 文件

Apache目录别名

为别名配置 Apache .conf [关闭]

httpd.conf 文件的 <VIRTUAL_HOST> 中的“如果”标记检查 apache 2.4 的 HTTP_UESR_AGENT 未按预期工作

Apache2.2和Apache2.4中httpd.conf配置文件 权限的异同