0

对此的任何帮助将不胜感激。

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

我的 .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 批量重定向到一个 url 的答案时,我读到更改 .htaccess 文件的位置并将其放置在它应用的特定目录中是明智的,因此对其他目录的请求不会甚至这些规则。

所以我把.htaccess文件放在了具体的子目录,也就是catalog中,但是重定向不再起作用。我在这里想念什么?我希望将要重定向的 url 规则放置在目录文件夹内的 .htaccess 文件中,以便每次加载根 .htaccess 时都不会加载所有这些重写规则。

4

2 回答 2

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

我在自己的网络服务器中对此进行了测试-希望对您有所帮助。

于 2013-04-11T20:56:45.207 回答
0

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

您必须将规则更改为

RewriteRule ^product_info.php$ ...

如果您有很多 URL 路径要重写,您可能还想查看RewriteMap.

于 2013-04-11T23:06:39.307 回答