重写规则对我来说是如此的痛苦,我不能让这个工作。我必须重定向像example.com/de/anypath这样的URL到example.de/anypath。
[anypath]实际上可以是任何路径,因为我必须让它在example.com/de/articles/programming/hello-world(将被重定向到example.de/articles/programming/hello-world)以及example.com/de/events/pic-nic(将被重定向到example.de/events/pic-nic)中工作。
这是我目前为止所写的:
RewriteRule "^/de/(.*)$" "http://example.de/$1" [R=301,NC,L]
- 我也尝试了RewriteCond,但没有更多的运气
RewriteCond %{HTTP_HOST} http://example.com/de
- 我正在使用xampp,但在我的网络服务器上测试结果相同。
- 我知道这个
.htaccess
文件是工作(得到错误,如果我输入一个错字) - 我得到了一些测试结果,例如:
RewriteRule "^(.*)$" "https://google.com" [R=301,NC,L]
任何帮助将不胜感激!
2条答案
按热度按时间yftpprvb1#
在
.htaccess
中,与RewriteRule
* 模式 * 匹配的URL路径不是以斜杠开头。即,它应该是"^de/(.*)$"
,而不是"^/de/(.*)$"
。除非还需要匹配
dE
、Ed
或DE
,否则不需要双引号,NC
标志可能是多余的。例如(在根
.htaccess
文件的 * top * 附近):(HTTP,而不是HTTPS?!)
RewriteRule
* 模式 * 上的尾随$
也是冗余的。首先使用302(临时)重定向进行测试,以避免潜在的缓存问题。
Host
HTTP请求头(即HTTP_HOST
服务器变量的值)仅包含 * hostname *。例如,在您的示例中仅包含example.com
。任何以
HTTP_
为前缀的服务器变量都是指同名的HTTP请求标头。我得到了一些测试结果,例如:
测试301时要小心,因为它们是被浏览器持久缓存的。在测试之前,你需要清除浏览器缓存!
mitkmikd2#
我添加了两个条件(第一个是根据本地或活动站点应用,第二个是保持节点路径不变):
而且它正如预期的那样工作。再次感谢。