Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex .htaccess在找到特定路径时重定向_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Regex .htaccess在找到特定路径时重定向

Regex .htaccess在找到特定路径时重定向,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,在过去的几天里,我一直在努力为我的.htaccess编写一个合适的解决方案,这样我就可以重定向(http://www.)domain.com/path/anotherpathtohttps://www2.domain.com/path/anotherpath 我已设法使其工作如下: RewriteCond %{THE_REQUEST} www\.domain\.com\path\anotherpath RewriteRule (.*) https://www2.domain.com/path/a

在过去的几天里,我一直在努力为我的
.htaccess
编写一个合适的解决方案,这样我就可以重定向
(http://www.)domain.com/path/anotherpath
to
https://www2.domain.com/path/anotherpath

我已设法使其工作如下:

RewriteCond %{THE_REQUEST} www\.domain\.com\path\anotherpath
RewriteRule (.*) https://www2.domain.com/path/anotherpath [R=301,L]
但是,当我需要重定向属于更深层次的页面(例如:domain.com/path/anotherpath/level1/level2,level1和level2是动态的)时,这个解决方案似乎不起作用。现在,它只在检测到特定的完整url时重定向

如果不在htaccess中定义完整的url,我怎么能做到这一点呢

任何帮助都将不胜感激


谢谢

通过
httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在
文档根目录下的
.htaccess
中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(domain\.com)$ [NC]
RewriteRule ^(shop)(/.*|)$ http://www2.%1/$1$2 [R=301,L]

通过
httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放入
文档根目录下的
.htaccess

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(domain\.com)$ [NC]
RewriteRule ^(shop)(/.*|)$ http://www2.%1/$1$2 [R=301,L]

我试过你的建议,但似乎没有我描述的效果。所以我想我的描述不是很好。我需要做的是,无论何时在url中检测到,都将其更改为,即使url后面有更多级别,如:。因此重定向的url将变为。只是level1/level2是动态的,我无法在.htaccess中定义它们。我理解您的问题,并仅对此给出了答案。你能在你的问题中发布你的.htaccess吗?或者试试我编辑过的答案。下面是我如何调整我的.htaccess:Options+FollowSymLinks-multiviewsrewriteengine On RewriteBase/#将商店页面重定向到HTTPS wwww2 url RewriteCond%{HTTP_HOST}^www\(mydomain\.com\en\SHOP)$[NC]RewriteRule^{mydomain.com/en/SHOP}[R=301,L]那意味着你没有听我的回答。.htaccess:
RewriteCond%{HTTP\u HOST}^www\(mydomain\.com\en\shop)$[NC]
中的这一行是错误的。它应该是
RewriteCond%{HTTP\u HOST}^www\(mydomain\.com)$[NC]
。记住
%{HTTP_HOST}
只匹配您的主机名而不是完整的URL。我明白您的意思,但我的问题是我不想将整个网站重定向到。我只需要在参观商店时重定向。因此,www.domain.com/en/shop(或更多级别,如en/shop/cars/bmw)变为(/cars/bmw)。但不要将www.domain.com/support/faq重定向到www2。我尝试了你的建议,但似乎没有按照我描述的方式工作。所以我想我的描述不是很好。我需要做的是,无论何时在url中检测到,都将其更改为,即使url后面有更多级别,如:。因此重定向的url将变为。只是level1/level2是动态的,我无法在.htaccess中定义它们。我理解您的问题,并仅对此给出了答案。你能在你的问题中发布你的.htaccess吗?或者试试我编辑过的答案。下面是我如何调整我的.htaccess:Options+FollowSymLinks-multiviewsrewriteengine On RewriteBase/#将商店页面重定向到HTTPS wwww2 url RewriteCond%{HTTP_HOST}^www\(mydomain\.com\en\SHOP)$[NC]RewriteRule^{mydomain.com/en/SHOP}[R=301,L]那意味着你没有听我的回答。.htaccess:
RewriteCond%{HTTP\u HOST}^www\(mydomain\.com\en\shop)$[NC]
中的这一行是错误的。它应该是
RewriteCond%{HTTP\u HOST}^www\(mydomain\.com)$[NC]
。记住
%{HTTP_HOST}
只匹配您的主机名而不是完整的URL。我明白您的意思,但我的问题是我不想将整个网站重定向到。我只需要在参观商店时重定向。因此,www.domain.com/en/shop(或更多级别,如en/shop/cars/bmw)变为(/cars/bmw)。但不要将www.domain.com/support/faq重定向到www2。