.htaccess - 通过.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 时,我得到了我期望的输出。
所以看来我需要比我想象的更多的帮助,拜托,谢谢!
解决方案
您可以在您的站点 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
.
确保在完全清除浏览器缓存后使用新的浏览器进行测试或测试。
推荐阅读
- d3.js - 我正在尽最大努力让 D3 Hierachy 树运行。但未能追加
- javascript - How can I refactor my 'view' code to display items per year?
- python - 为什么即使遇到`RuntimeError`,asyncio 事件循环有时也能完成任务?
- python - 如何对自定义迭代进行 json 序列化?
- java - Java Apache中相同的请求超时,在邮递员中工作正常
- javascript - 测试数组对象的值
- javascript - 尝试运行 Jest 时无法识别 Babel 插件
- firebase - 可以按“不包含”或类似过滤的 Firestore 数据模型
- python - 为从队列读取的工作线程写入进度
- asp.net-mvc - ASP.NET 中的 CSS 捆绑不包括生产中的缩小版本