我在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时,我得到了期望的输出。
所以看来我需要的帮助比我想的还要多,谢谢!
答案 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
以外的所有内容。
在完全清除浏览器缓存后,请确保使用新的浏览器进行测试。