gpt4 book ai didi

mod-rewrite - mod_rewrite 强制小写 url

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:37:20 25 4
gpt4 key购买 nike

我已经在网上搜索了我的问题的答案,但没有任何运气,所以她说:

我正在为 SEO 目的重做我的 mod_rewrite,我希望所有的 url 都是小写的,例如:

http://BLAbla.com/

成为

http://bla.com/

目前我的 .htaccess 看起来像这样:

RewriteEngine on 

RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule (.*)$ http://www.example.com/$1 [R=301,L]

RewriteRule ([\w]*)/$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^([^/]+)/([^/]?)$ index.php?worker=$1&params=$2 [L]

但是当我运行 http://localhost/site/我收到错误 500。我只知道基本的 reg ex,而且 mod_rewrite 非常有限,所以我无法在此处找到错误。如果我删除 rewritemap 行,该页面不会给出任何错误。是我的服务器不支持 rewritemap 还是什么??

非常欢迎关于 .htaccess 文件的任何其他评论:)

感谢您的宝贵时间。

最佳答案

@埃斯本

重写主机名有点棘手。您有权访问服务器错误日志吗?因为这可能会使用一些有关 500 的原因的信息。

为清楚起见,将参数括在引号中是个好主意:

RewriteMap  lc int:tolower
RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lc:$1}" [R=301,L]

[L] 将强制结束对此请求的处理,这意味着如果对 URI 有更多工作要做,它将在重新请求时发生提交。您可能需要考虑对您的修改进行批处理,以便请求仅通过一次修改过程:

RewriteMap  lc int:tolower
RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lc:$1}" [E=REDIRECT:TRUE]

RewriteCond "%{HTTP_HOST}" "!^www\." [NC]
RewriteRule "^" "-" [E=REDIRECT:TRUE,E=PREFIX_WWW:TRUE]

以下尝试做什么?

RewriteRule ([\w]*)/$ http://%{HTTP_HOST}/$1 [R=301,L]

效果(尽管正则表达式很古怪)是“如果 REQUEST_URI 以‘/”结尾,将其剥离并重定向。那是你要的吗?请记住,.htaccess 文件中的内容略有不同。

还有这个:

RewriteRule ^([^/]+)/([^/]?)$ index.php?worker=$1&params=$2 [L]

您似乎在尝试说“将任何“foo/bar”更改为“index.php?worker=foo&params=bar””。如果这是正确的,它可能无法正常工作。由于您位于 .htaccess 文件中,因此您匹配的是文件系统路径,不是 URI。

那么试试这个:

RewriteMap  "lc"                 "int:tolower"

RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lc:$1}" [E=REDIRECT:TRUE]

RewriteCond "%{HTTP_HOST}" "!^www\." [NC]
RewriteRule "^" "-" [E=REDIRECT:TRUE,E=PREFIX_WWW:TRUE]

RewriteCond "${ENV:REDIRECT}" "!TRUE"
RewriteRule "^" "-" [SKIP=2]
RewriteCond "${ENV:PREFIX_WWW}" "TRUE"
RewriteRule "(.*)" "http://www.${HTTP_HOST}/$1" [R=301,L]
RewriteRule "^" "-" [R=301,L]

RewriteRule "^([^/]+)/([^/]?)$" "index.php?worker=$1&params=$2" [PT]

我不确定 SKIP 对与 RewriteRule 混合的 RewriteCond 语句的影响,但试试看上面的内容如果你再近一点。

关于mod-rewrite - mod_rewrite 强制小写 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893560/

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