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,他们
# 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]