【发布时间】:2015-10-20 13:55:36
【问题描述】:
我在 URL 重写方面遇到了一些我无法弄清楚的问题。这就是问题所在。
此网址未正确重定向:http://domain.com/index.php?en=oldpage
但是,此 URL IS 正确重定向:http://www.domain.com/index.php?en=oldpage
网址中没有正确重定向的唯一区别是缺少www.
这是我正在使用的重写:
RewriteCond %{QUERY_STRING} ^en=oldpage
RewriteRule ^(index.php/|)$ /newpage.html? [R=301,L]
我也有此重写 BEFORE 其他重写,以处理没有“www.”的网址:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
为什么没有“www”就不会重定向。 ?任何帮助将非常感激。谢谢。
【问题讨论】:
-
你能定义
not redirecting properly吗?这是否意味着或根本不重定向?您的规则是否与您在问题中的顺序相同? -
因为重定向不正确。它只是将用户返回到主页(www.domain.com),而不是预期的重写。我有重写:RewriteCond %{HTTP_HOST} !^www\。 ...首先,在 RewriteCond %{QUERY_STRING} ^en=oldpage ... 之前,问题会变得更加清晰。
-
您的规范
www工作正常吗?RewriteRule中的模式^(index.php/|)$与您发布的示例 URL 都不匹配(有或没有www),所以这里肯定有“其他事情”。 -
现在重写工作正常。我不知道的服务器相关问题。谢谢
标签: apache .htaccess url-rewriting rewrite no-www