使用/在url模式时的URL重写问题

时间:2012-09-01 08:25:46

标签: php url-rewriting

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

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

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

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

如果我拨打网址MY_WEB_DOMAIN.COM/xyz/abc我收到404错误..

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

arkascha是对的。使用此:

RewriteRule ^/?xyz.* http://www.google.com [R=301]
/?使第一个/可选,在这种情况下是一种asinine。但。*是你想要捕捉的任何东西匹配/ xyz -----

如果arkascha发布作为答案你应该接受它。 我测试了它,它工作正常。如果它不起作用,请检查htaccess中此规则之上的行。你可能有冲突。

答案 1 :(得分:0)

重写工作正常。

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

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

所以我只是为php中的重写url做了同样的事情。通过放置线 $ _SERVER [ 'REQUEST_URI'] = $ _ SERVER [ 'REDIRECT_URL'];

完成了。 :)