【发布时间】:2020-09-22 20:44:14
【问题描述】:
我从一个 .htaccess 文件在一台服务器上运行多个站点,该文件具有使用一页 (index.php?pageid=x) 的自定义站点设计。根据 pageid,它会触发不同的内容/布局。
对于我在 .htccess 中使用 IF 语句的每个站点,例如:
<If "%{HTTP_HOST} == 'site.com'">
RewriteRule goes here
</If>
如果我不在 IF 语句中,我会使用这样的重写规则:
RewriteRule ^fr/cookie-policy/$ /index.php?pageid=11 [L]
上述规则按计划工作,但如果我在 IF 语句中使用此规则,它就不起作用。我必须删除前导 ^ 并将其换成 /。但这远非理想,因为它会匹配任何带有指定模式的结尾。
谁能提出解决方案?我错过了什么?
【问题讨论】:
-
可能与这些指令的评估顺序有关。如果您只是添加前导斜杠,即
RewriteRule ^/fr/…,它是否有效?如果没有,那么在此之前可能还有更多路径段尚未被剥离。 -
@04FS 如果我按照您在 IF 语句中的建议添加前导斜杠,则会失败并显示 404。
-
然后先弄清楚你现在处理的实际 URL 路径是什么。
RewriteRule (.*) https://example.com?path=$1 [R=302]此时应该捕获完整路径,并进行外部重定向到https://example.com?path=…- 该参数不会在接收端执行任何操作,但在浏览器地址栏中检查您被重定向到的位置应该清楚地显示您此时实际的 URL 路径是什么。 (是的,我的意思是https://example.com,从字面上看,不要用您自己的域替换它。)
标签: .htaccess