Apache 重写规则——如果传入请求不包含某些字符,则重写到其他URL

Apache 重写规则——如果传入请求不包含某些字符,则重写到其他URL,apache,mod-rewrite,Apache,Mod Rewrite,如何构造一个规则来检查传入的请求是否具有某些术语,如果没有,则重新路由到其他URL 例如,我有一个网站my.example.com。如果传入的URL是my.example.com/login,那么它应该执行该请求。如果是其他内容(不是login),则必须将请求重新路由到your.example.com。比如说, my.example.com/login2必须重新路由到your.example.com/login2 my.example.com/nologin必须重新路由到your.exampl

如何构造一个规则来检查传入的请求是否具有某些术语,如果没有,则重新路由到其他URL

例如,我有一个网站
my.example.com
。如果传入的URL是
my.example.com/login
,那么它应该执行该请求。如果是其他内容(不是
login
),则必须将请求重新路由到
your.example.com
。比如说,

  • my.example.com/login2
    必须重新路由到
    your.example.com/login2
  • my.example.com/nologin
    必须重新路由到
    your.example.com/nologin
  • my.example.com/getname
    必须重新路由到
    your.example.com/getname
当然,如果是

  • my.example.com/login
    必须重新路由到
    my.example.com/login

如何使用和实现这一点?

我知道这并不完全是您所要求的,但我会使用.htaccess将所有请求(有效或无效)直接发送到一个文件,然后使用服务器端脚本(例如,在我的例子中是PHP)切换有效选项,使用重定向到其他URL的默认值捕获其他内容

RewriteCond %{HTTP_HOST}   !^www\.myexample\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://www.myexample.com/$1 [L,R]
e、 g.这:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

将任何不是对实际文件或目录的请求发送到index.php

我知道这并不完全是您所要求的,但可以通过使用.htaccess将所有请求(有效或无效)直接发送到一个文件,然后使用服务器端脚本(例如,在我的例子中为php)切换有效选项来实现,使用重定向到其他URL的默认值捕获其他内容

e、 g.这:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
将不是实际文件或目录请求的任何内容发送到index.php

尝试以下规则:

RewriteCond %{HTTP_HOST} ^my\.example\.com$
RewriteRule !^login$ http://your.example.com%{REQUEST_URI} [L,R=301]
试试这个规则:

RewriteCond %{HTTP_HOST} ^my\.example\.com$
RewriteRule !^login$ http://your.example.com%{REQUEST_URI} [L,R=301]

我认为你的剧本没有达到目的。。。例如,我没有看到任何涉及登录和yourexample.com的逻辑?啊,好吧,很抱歉我第一次误解了这个问题。我认为你的脚本没有达到预期的效果。。。例如,我没有看到任何涉及登录和yourexample.com的逻辑?啊,好吧,对不起,我第一次误解了这个问题。我是故意使用example.com的,你也应该这样。看,我是故意使用example.com的,你也应该这样。看见