【发布时间】:2020-06-21 01:00:33
【问题描述】:
我正在将旧网站从 apache 2.2 迁移到 2.4
我有一个 vhost.conf 文件,其中包含以下重写规则:
RewriteRule ^/news/[0-9]{4}/[A-za-z]{3}/([0-9a-zA-Z-]*)/([0-9]{4})([0-9]{6})/?$ "/news/article.cfm?article_id=$3&urltitle=$1&clk=$2" [NE,L]
所以我想把这个网址: https://example.com/news/2016/Feb/Article-Title/0025012345
进入这个: https://example.com/news/article.cfm?article_id=012345&urltitle=Article-Title&clk=0025
根据我在 RewriteRule 的第二部分中输入的内容,我得到以下内容:
"https://example.com/news/article.cfm?article_id=$3&urltitle=$1&clk=$2" 这工作正常,但我不想指定主机名,因为它在 dev/staging/live 服务器上使用,所以 URL 会改变
"/news/article.cfm?article_id=$3&urltitle=$1&clk=$2" 这会抛出一个 404,它会显示在 access_log 中
"news/article.cfm?article_id=$3&urltitle=$1&clk=$2" 这会抛出一个 503,它会出现在 access_log
所以我知道我在规则的第一部分正确识别了 URL,并使用我的正则表达式获取了正确的组件,因为指定完整的域名显示了正确的 URL 操作。
我完全没有做相对重定向,我确信这个规则在 Apache 2.2 中有效
我正在使用以下软件:
CentOS Linux 版本 7.7.1908(核心)
服务器版本:Apache/2.4.6 (CentOS) 服务器搭建:2019年8月8日11:41:18
【问题讨论】:
标签: apache mod-rewrite centos7