Php 未在子文件夹上触发重写规则

Php 未在子文件夹上触发重写规则,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我[可能]有一个不寻常的设置: 我有一个存储/根文件夹,其中包含多个域和所有子域 指向同一文件夹 然后,我为每个域或子域和我们创建一个子文件夹 .htaccess将域重定向到正确的文件夹/文件 下面是我如何做到这一点的工作示例 # Domain1.com RewriteCond %{HTTP_HOST} ^spain\.domain1\.com [NC] RewriteRule ^(.*)$ /spain/$1 [L] 这一切都很好,但是: 如果用户访问doamin1.com/spain,他们

我[可能]有一个不寻常的设置:

  • 我有一个存储/根文件夹,其中包含多个域和所有子域 指向同一文件夹
  • 然后,我为每个域或子域和我们创建一个子文件夹 .htaccess将域重定向到正确的文件夹/文件
  • 下面是我如何做到这一点的工作示例

    # Domain1.com
    RewriteCond %{HTTP_HOST} ^spain\.domain1\.com [NC]
    RewriteRule ^(.*)$ /spain/$1 [L]
    
    这一切都很好,但是: 如果用户访问doamin1.com/spain,他们当然会看到该文件夹中的所有文件

    所以,我尝试在domain1.com/spain上添加一个重定向。。。但这不起作用。。。我什么都试过了。包括尝试根.htaccess和西班牙/.htaccess的重定向。两者都不起作用

    我正在尝试下面的方法(不起作用)

    我试过上面的各种方法,但似乎都不管用

    不过,RedirectMatch确实可以工作(如下),但也会断开上面的子域(在第一个示例中)

    如果我尝试匹配更多,并添加重定向匹配(如下),则不会触发匹配

    RedirectMatch ^www\.domain1\.com/spain/$  /
    
    我知道我需要做的是可能的(我想和假设),但我在这里把头撞在墙上。。。。。 请提供建议,当然谢谢

    这是不正确的:

    # Domain1.com/spain
    RewriteCond %{HTTP_HOST} ^domain1\.com/spain/ [NC]
    RewriteRule (.*)$ http://www.domain1.com/? [L]
    
    因为最后一部分(/spain)从来都不是HTTP_主机的一部分,所以它永远不会匹配:)

    你想做的事情是这样的

    # Domain1.com/spain
    RewriteCond %{HTTP_HOST} ^domain1\.com [NC]
    RewriteRule ^spain(.*)$ http://www.domain1.com/? [R=302,NC,L]
    

    换言之,要在RewriteRule中将URL的/spain部分移动到实际匹配的位置,并在上面的RewriteCond中保持域名匹配。

    RewriteRule中出现故障,它必须是
    ^Spania(.*)
    ,而不是
    ^/Spania(.*)
    -请参阅更新的答案谢谢!我希望我能说它有效,但不幸的是它没有被触发(我使用了你的更新版本)。我在根目录和/spain/folderSo中都尝试过这个链接
    http://domain1.com/spain/
    没有重定向到
    http://www.domain1.com?
    或使用什么URL进行测试?(成人自然警告)我已将您建议的上述代码添加到根文件夹和/spain/文件夹中,不,它没有重定向(如果我在RewriteRuel中删除了西班牙,我想我正在做其他的事情)刚刚在本地测试并对我有效。这些行需要位于domain1.com的根文件夹中,并且更靠近顶部,以便首先检查它们。
    # Domain1.com/spain
    RewriteCond %{HTTP_HOST} ^domain1\.com/spain/ [NC]
    RewriteRule (.*)$ http://www.domain1.com/? [L]
    
    # Domain1.com/spain
    RewriteCond %{HTTP_HOST} ^domain1\.com [NC]
    RewriteRule ^spain(.*)$ http://www.domain1.com/? [R=302,NC,L]