2013-04-11 103 views
0
改写

任何帮助,这将真的不胜感激。.htaccess从子目录

我在.htaccess文件中设置301重定向,将数百个旧URL重定向到最新的实时页面。

我的.htaccess文件目前位于域的根,看起来是这样的:

RewriteCond %{QUERY_STRING} ^pName=product-one$ [OR] 
RewriteCond %{QUERY_STRING} ^pName=product-two$ [OR] 
RewriteCond %{QUERY_STRING} ^pName=completely-different-name$ 
RewriteRule ^catalog/product_info.php$ http://www.mydomain.com/new-product-name-p-123.html? [R=301,L] 

虽然研究的答案如何批量重定向到一个网址中使用的.htaccess,我读了它会明智地改变.htaccess文件的位置并将其放在它所应用的特定目录中,所以对其他目录的请求甚至不会这些规则。

因此,我已经将.htaccess文件放在特定的子目录中,这是目录,但重定向不再有效。我在这里错过了什么?我希望将URL的规则重定向到目录文件夹中的.htaccess文件中,以便每次加载根.htaccess时都不会加载所有这些重写规则。

+0

我也有OScommerce,所以我正在检查具体的例子。 – 2013-04-11 21:05:56

+0

你究竟在做什么。你能解释一下吗? – 2013-04-11 21:10:42

回答

0

我建议你改变你的重定向301行以包含直接到你的OSCommerce目录文件夹的路径。

因此,而不是使用

RewriteRule ^catalog/product_info.php$ http://www.mydomain.com/new-product-name-p-123.html? [R=301,L] 

使用例如为:

Redirect 301 /website/catalog http://www.mydomain.com/page2.htm 

Redirect 301 /catalog http://www.mydomain.com/page2.htm 

选项1)是,如果你的目录位于http://youdDomain.com/website/catalog/。 如果它位于http://youdDomain.com/website/aaa/catalog/你可以使用:

Redirect 301 /website/aaa/catalog http://www.mydomain.com/page2.htm 

我在自己的Web服务器测试这一点 - 希望它帮助。

0

将.htaccess放入子目录时,必须相应地调整RewriteRule模式。 mod_rewrite去除.htaccess文件所在的目录前缀,请参阅RewriteRule - What is matched?

您必须更改规则

RewriteRule ^product_info.php$ ... 

如果你有大量的URL路径重写,你可能也想看看RewriteMap