所以我正在将我的网站从子域“移动”到根域上的子文件夹,并且在此过程中必须根据原因更改某些子目录结构。这使得重定向对于像我一样具有htaccess知识的人来说有点困难。
对于架构中更深层次的东西(它本质上是一个目录网站),一些结构将是相同的,但有些事情需要移动。以下是我迄今为止创建的内容:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/for-sale$
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/search$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/for-sale-details$
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/details$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/buyer-registration
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/buyer-registration [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/advertise-with-us
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/advertise-with-us [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/favourites
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/favourites [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/saved-searches
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/saved-searches [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com/system$
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/system$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com
RewriteRule ^(.*)$ http://www.example.com/property-for-sale/ [R=301,L]
我想要发生的一个例子是
http://subdomain.example.com/for-sale-details/35141_xml_bvi0009154/gensac-gironde
重定向到
http://www.example.com/property-for-sale/details/35141_xml_bvi0009154/gensac-gironde
等等。
基本上,代码末尾没有$的上述重定向是独立页面,之后没有其他子目录。任何带有$的结尾意味着还有更多的目录层,但之后的任何内容都应保留在新URL的末尾。
非常感谢任何帮助!是的,当涉及到这种事情时,我是一个完整的菜鸟,所以请保持友好:)
答案 0 :(得分:0)
%{HTTP_HOST}
var是请求中的“主机”标头,仅包含主机名,没有/for-sale
之类的路径信息。因此,您只能与之匹配,并且您的所有规则都不起作用,因为您尝试匹配URI路径。
相反,所有规则都需要如下所示:
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^for-sale/(.*)$ /property-for-sale/search/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule ^for-sale-details/(.*)$ /property-for-sale/details/$1 [R=301,L]
等