gpt4 book ai didi

apache - 结合两个 mod_rewrite 规则

转载 作者:行者123 更新时间:2023-12-04 06:40:52 24 4
gpt4 key购买 nike

我很讨厌重写规则所以..可怜我>_>

我想让这两个规则一起工作..基本上我想在使用 www 时删除它,然后将所有请求发送到 index.php,如果域之后有东西,则使用 GET 变量。

例如:www.example.com 和 www.example.com/foo 将分别转到 example.com 和 example.com/foo。

这是我必须合并的内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?token=$1 [QSA,L]
</IfModule>

我还没有测试过,所以我不……但我非常怀疑我做对了。

编辑 : 澄清一下,我并不是说这需要成为一个规则,但它们会按预期一起工作吗?

最佳答案

这应该没问题,因为您的第一个规则被标记为 [L] Last 和 [R] Redirect - 因此两个规则不必同时处理。第一个将处理,重定向,清除第一个,然后第二个处理。

您可以使用 [C] 将条件链接在一起 - 意味着如果第一个通过,则尝试下一个,但如果第一个失败,则跳过所有链接的后续条件。我不认为这就是你想要的。如果有的话,你会想要一个 [OR] 指令。

你的重写看起来不错,除了最后一个,如果你在 CodeIgniter 站点上使用它——通常看起来像:

RewriteRule ^(.*)$ index.php?/$1 [L]

作为最佳实践,您应该在 test-subdomain.example.com 上设置一个重复的站点,以便您可以在尽可能接近实时环境的情况下处理此类问题。

对您的评论:如果您想通配域,只需:
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.com$ [NC]
RewriteRule ^[^.]+.([^.]+).com/(.*)$ http://$1.com/$2 [R=301,L]

关于apache - 结合两个 mod_rewrite 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4250585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com