通过.htaccess重定向除某些特定流量以外的所有流量。

时间:2019-06-27 20:36:30

标签: .htaccess cpanel

我在example.com/DesktopModules/SubscriptionSignup/Tools/IPNHandler.aspx有一个文件需要重写,以便它实际运行example.com/paypal-ipn-handler.php

所有其他流量都应重定向到another-example.com

我正在.htaccess文件中使用它:

# Rewrite IPNHandler.aspx to paypal-ipn-handler.php
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/Tools/IPNHandler.aspx [NC]
RewriteRule ^.*$ https://www.example.com/paypal-ipn-handler.php [P]
</IfModule>

#Redirect all other traffic to new domain.
RewriteRule ^ https://www.another-example.com%{REQUEST_URI} [L,R=301]

但是,这将重定向所有内容,包括应保留在该域中的URL,但将其重写为PHP文件。

例如,使用上述方法,我希望到example.com/DesktopModules/SubscriptionSignup/Tools/IPNHandler.aspx的流量将保持在example.com,但是运行PHP脚本。但是,这没有发生。它正被重定向到another-example.com/..../IPNHandler.aspx,并且给了我404。

有关如何调整此设置的任何信息,以便我的重写可以正常进行并保留在原始域上,但所有其他流量都将被重定向,将不胜感激。谢谢!

编辑

实际上,我注释掉了重定向以查看我的重写是否有效,并且实际上给了我404,但是当我直接单击paypal-ipn-handler.php时,我得到了期望的输出。

所以看来我需要的帮助比我想的还要多,谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在网站烟灰.htaccess中使用这些规则:

RewriteEngine On

RewriteRule Tools/IPNHandler\.aspx$ /paypal-ipn-handler.php [L,NC]

#Redirect all other traffic to new domain.
RewriteRule !^paypal-ipn-handler\.php$ https://www.another-example.com%{REQUEST_URI} [L,NC,NE,R=301]

这里只需要进行内部重写就无需使用P标志。

条件!^paypal-ipn-handler\.php$将重定向/paypal-ipn-handler.php以外的所有内容。

在完全清除浏览器缓存后,请确保使用新的浏览器进行测试。