在.htaccess的RewriteCond中匹配包含变量环境的正则表达式

hk8txs48  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(147)

这里的目标是,如果URL后面有斜杠,如h2 tps://domain.com/page/,则重定向到h2 tps://domain.com/page
网站首页〉〉〉〉〉〉〉〉〉〉domain.com/page
它应该只在生产环境中工作,而不是在开发环境中,这就是为什么条件必须只适用于domain.com. domain.com设置为变量,以便在更复杂的环境中进行简单的配置。
实际上,这是我的.htaccess:

RewriteEngine on
RewriteBase /

RewriteRule .* - [E=DOMAIN:domain.com]

# Remove ending / AND rewrite with https and without www in a single redirection
RewriteCond expr "%{HTTP_HOST} -strmatch '(www\.)?%{ENV:DOMAIN}'" [NC]
RewriteCond %{REQUEST_URI} /public/(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) https://%{ENV:DOMAIN}/%1 [R=301,L]

我试过在表达式中使用-strmatch和=,事实上h2 tps://domain.com/page/会重定向,但h2 tps://www. domain. om/page/不会,就好像可选的(www.)?被忽略了一样。
我需要你帮忙!

eimct9ow

eimct9ow1#

所以,感谢CBroe的第一个评论,我来这个解决方案:

RewriteCond expr "%{HTTP_HOST} -strcmatch '*%{ENV:DOMAIN}'"
  • 字符是表示任何字符的通配符,不包括任何字符。“www.domain.com”和“domain. COM "匹配。

相关问题