1

因此,我正在将我的站点从子域“移动”到根域上的子文件夹,并且在此过程中必须更改某些子目录结构作为原因。对于像我一样缺乏 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 的末尾。

任何帮助将不胜感激!是的,当涉及到这种事情时,我是一个完全的菜鸟,所以请善待:)

4

1 回答 1

0

%{HTTP_HOST}var 是请求中的“Host”标头,它只包含主机名,没有像/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]

等等

于 2013-09-03T19:36:58.880 回答