Apache重写以删除不起作用的特定路径

时间:2018-03-16 18:16:39

标签: apache mod-rewrite

我们正在构建一个新网站,但仍会引用我们之前网站上的一些旧网页,这些网页现在将在域之后获得/_old路径。我想使用Rewrite删除它。我试过了:

RewriteCond %{HTTP_HOST} ^www\.mysite\.edu$ [NC]
RewriteRule ^_old(/.*|)$ $1 [L,NC,R]

但是,然后我访问www.mysite.edu/_old/test它不会按预期重写为www.mysite.edu/test

我做错了什么?

1 个答案:

答案 0 :(得分:0)

首先,您的代码应该按照您在给定测试中的预期执行,除非您没有将RewriteEngine on放在顶部,如果它在那里,这意味着您可能需要清除浏览器缓存或{{1}在您的服务器上未启用,最终您可能会在没有mod_rewrite的情况下发出请求,并且您的规则将仅与www的请求匹配。

所以,我会给你两个建议,如果你已经做了以前的步骤,你可以选择适合你的东西,首先是这段代码:

www

上面的代码会重定向以RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.edu$ [NC] RewriteRule ^_old/?(.*)$ /$1 [L,NC,R=301] 开头的所有内容,如果在_old之后或_old之后没有任何内容,它将转到主根目录。

如果您想使用上述代码,请确保从URI中删除/时,每个请求都有相同的路径。

另一个建议是,如果您只想在外部重定向,然后在内部使用相同的路径,请用此替换该代码:

_old