首页 > 解决方案 > 通过.htaccess 重定向除某些特定流量之外的所有流量..?

问题描述

我有一个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 时,我得到了我期望的输出。

所以看来我需要比我想象的更多的帮助,拜托,谢谢!

标签: .htaccesscpanel

解决方案


您可以在您的站点 soot .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.

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


推荐阅读