gpt4 book ai didi

.htaccess - 使用 htaccess 删除尾随问号

转载 作者:行者123 更新时间:2023-12-02 00:13:50 24 4
gpt4 key购买 nike

有人可以帮我理解这段代码吗?

# Remove trailing ?
RewriteCond %{THE_REQUEST} ? HTTP [NC]
RewriteRule .? /%{REQUEST_URI}? [R=301,L]

基本上我有一个网站 www.example.com 正在生成一个指向 www.example.com/index.cfm 的链接?我需要它重定向到 www.example.com 以进行 SEO 复制。我设法删除了 index.cfm 但 ?仍然留在那里(www.example.com/?)。如果结尾的斜杠是最后一个字符,它也会被删除。我在网上找到了这条规则,但我在 apache 中收到了“RewriteCond: bad flag delimiters”警报,但它没有做任何事情。

我也有一些页面,如 www.example.com/index.cfm?term=test 用于搜索,所以我只想去掉尾随的问号,而不是当我有一个查询附加到它时。

错误在 RewriteCond 中。我需要帮助了解病情以及为什么它不起作用而不仅仅是它的答案。

以防万一这里是整个htaccess:
RewriteEngine On
Rewritebase /

# remove trailing index.cfm
RewriteRule ^index.cfm(\?)?$ / [R=301,L]

# SEF URLs
SetEnv SEF_REQUEST false
RewriteRule ^[a-z\d\-]+/[a-z]\d+/? /index.cfm/$0 [NC,PT,QSA,E=SEF_REQUEST:true]
RequestHeader add SEF-Request %{SEF_REQUEST}e
RewriteCond %{HTTP:SEF_REQUES} ^true$ [NC]
RewriteRule . - [L]

# Remove trailing ?
RewriteCond %{THE_REQUEST} ? HTTP [NC]
RewriteRule .? ^%{REQUEST_URI}? [R=301,L]

注意:我在发布之前确实在网上/stackoverflow 上搜索过,但没有找到解决我的问题的方法。

编辑:我还注意到我的 RewriteRule ^index.cfm(\?)?$/[R=301,L] 正在删除 index.cfm,即使它不是 url 中的最后一件事,当我尝试搜索时导致 404某事(www.example.com/index.cfm?term=test)如果有人能纠正我并解释那会很棒。谢谢。

EDIT2: www.example.com/index.cfm?term=test&a=dh&j=dhjsi 不应该被重定向。
www.example.com/a/b/d/f/h/w/d 不应重定向。
www.example.com/index.cfm?和 www.example.com/index.cfm 应该被重定向到 www.example.com。

最佳答案

RewriteCond %{THE_REQUEST} ? HTTP [NC] 
RewriteRule .? ^%{REQUEST_URI}? [R=301,L]

不行,因为 ?是正则表达式的保留字符,您需要将它与空格一起转义。尝试:
RewriteCond %{THE_REQUEST} \?\ HTTP [NC] 
RewriteRule ^/?(index\.cfm)? /? [R=301,L]

此外,您希望在您的 # remove trailing index.cfm 下使用此规则规则,而不是在最底层。

关于.htaccess - 使用 htaccess 删除尾随问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14165287/

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