0

我在使用 .htaccess 文件重写 URL 时遇到问题,问题如下。

当我将以下代码放入服务器上的 .htaccess 文件中时

RewriteRule ^/?xyz http://google.com [R=301]

我在浏览器中调用 url MY_WEB_DOMAIN.COM/xyza 它会将我重定向到 google.com(如预期的那样)

如果我调用 url MY_WEB_DOMAIN.COM/xyz/abc 我得到 404 错误..

在这两种情况下都不应该重定向到谷歌吗?还是在我的模式中使用 /(斜杠)影响了我的代码?

提前致谢。

4

2 回答 2

1

阿卡沙是对的。用这个:

RewriteRule ^/?xyz.* http://www.google.com [R=301]

这 /?使它成为第一个/可选的,在这种情况下这是一种愚蠢的。但是 .* 是你想要捕捉任何匹配 /xyz 的东西-----

如果 arkascha 将其作为答案发布,您应该接受它。我对此进行了测试,效果很好。如果它对您不起作用,请检查 htaccess 中此规则上方的哪些行。你可能有冲突。

于 2012-09-01T08:40:34.553 回答
0

重写工作正常。

我检查了服务器端的标头是否有重写的 URL 并直接调用 url。我发现只有一个变化。

在直接 url 它包含 redirect_url 和 request_uri 是相同的..对于重写的 url 两者都是不同的。(我认为 oxwall 可能正在使用 request_uri 来处理......因为它不是我想要的......

所以我只是让它们与 php 中重写的 url 相同。通过放置行 $_SERVER['REQUEST_URI']=$_SERVER['REDIRECT_URL'];

它完成了。:)

于 2012-09-10T11:05:14.003 回答