我不得不重写网址,所以我已经使用下面的代码在我的htaccess这是工作
RewriteRule ^products/part/pumps/?$ pumps.php [L,NC]
如果有人试图访问URL链接exmple.com/products/part/pumps/
,则它显示pumps.php
数据。
现在我的问题是,如果有人试图访问www.example.com页面example.com/pumps.php,那么我如何重定向到此链接exmple.com/products/part/pumps/
我已经尝试,但得到一个重定向错误
Redirect 301 /pumps.php /products/part/pumps/
我有许多网页,我必须重定向他们也.在这里分享两个例子
RewriteRule ^power\.php$ /products/engine/power/ [R=301,L]
RewriteRule ^connecting\.php$ /products/connection/power/connecting/ [R=301,L]
1条答案
按热度按时间slwdgvem1#
在现有重写 * 之前 * 使用以下代码:
(But首先使用302重定向进行测试,以避免潜在的缓存问题。)
通过检查
REDIRECT_STATUS
环境变量是否为"空",我们可以只重定向来自用户的直接请求,而不是稍后重写的重写请求。成功重写请求后,REDIRECT_STATUS
的值为200
(如200 OK HTTP状态)。RewriteCond
(condtion)指令必须位于触发外部重定向的每个RewriteRule
指令之前。Redirect
指令(mod_alias的一部分,而不是mod_rewrite)是无条件处理的,最终将重定向重写的请求,从而导致重定向循环。使用
END
标志而不是RewriteCond
(需要Apache 2.4)或者,您可以修改现有的重写,使用
END
标志(而不是L
)来防止重写引擎的循环。然后可以省略上面提到的RewriteCond
指令。但请注意,END
标志仅在Apache 2.4+上可用。例如:
建议在内部重写之前将所有外部重定向组合在一起。
不幸的是,由于这些重写的不同性质,看起来不像规则可以进一步减少。