这是我的问题,我几天都在挣扎。
我们有一个域名firstpart.maindomanin.com nad子域名secondpart.maindomain.com。 在第一个域下,项目的第一部分(基于SaaS商务)和第二部分(在secondpart.maindomain.com下) - 基于Symfony。这两部分通过SOAP服务等连接。
对于firstpart.maindoman.com,我们正在使用Cloudflare。 我们有反向代理所以: firstpart.maindomain.com/uk/made指向secondpart.maindomain.com/uk
现在(由于一些不相关的问题,我们无法启用cloudflare secondpart.maindomain.com)我们希望将所有url-s从secondpart.maindomain.com/uk重定向到firstpart.maindomain.com/uk/made 所以例如 secondpart.maindomain.com/uk/furniture到firstpart.maindomain.com/uk/made/furniture secondpart.maindomain.com/uk/sales到firstpart.maindomain.com/uk/made/sales 等等 所以我们需要更改域名并在语言代码和其他网址之间添加“制作”
除此之外,我们需要重定向所有网址 firstpart.maindomain.com/uk/furniture到firstpart.maindomain.com/uk/made/furniture (在语言代码和其余网址之间添加'make')
我们需要在subdomain secondpart.maindomain.com下的htaccess中执行此操作。
我想出了一些东西:
RewriteCond %{HTTP_HOST} secondpart.maindomain.com$ [NC]
RewriteRule ^([a-z]{2,3})(.*)$ http://firstpart.maindomain.com/$1/made$2 [R=301,L]
和url一样 secondpart.maindomain.com/uk/furniture
我正在重定向到
http://firstpart.maindomain.com/uk/made/furniture
这很好,但重定向后有无限循环(所以除了更改网址不起作用)
因为事实证明firstpart.maindomain.com/uk/made和secondpart.maindomain.com/uk的HTTP_HOST是相同的,它是secondpart.maindomain.com所以条件不起作用。 我也出现了像
这样的条件RewriteCond %{REQUEST_URI} !^made [NC]
RewriteRule ^([a-z]{2,3})(.*)$ http://firstpart.maindomain.com/$1/made$2 [R=301,L]
如果在URI中有“make”字样,则不符合条件,在这种情况下,它与第一条规则中的相同。
我尝试了几种不同的配置,但没有任何工作。
当我用http://htaccess.madewithlove.be/进行测试时,一切都很好,并且没有重定向。
所以我假设在cloudflare上有反向代理的东西。
我不是htaccess的专家,但实际上我尝试了很多解决方案而且没有任何工作。
我真的很感激一些帮助。
P.S。以防万一.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^([a-z]{2,3})(.*)$ http://vendauat.lauraashley.com/$1/made$2 [R=301,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>
答案 0 :(得分:1)
这个条件:
RewriteCond %{REQUEST_URI} !^made [NC]
将始终得到满足,因为您的正则表达式模式表明:如果请求永远不会启动 made
,但%{REQUEST_URI}
变量始终以开头/
。也许你想要的是这个:
RewriteCond %{REQUEST_URI} !^/[^/]+/made/