对此有任何帮助真的很感激。
我在.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文件放在特定的子目录中,这是目录,但重定向不再有效。我在这里错过了什么?我希望将url的规则重定向到目录文件夹中的.htaccess文件中,这样每次加载根.htaccess时都不会加载所有重写规则。
答案 0 :(得分: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
我在自己的网络服务器上对此进行了测试 - 希望有所帮助。
答案 1 :(得分:0)
将.htaccess放在子目录中时,必须相应地调整RewriteRule
模式。 mod_rewrite剥离.htaccess文件所在的目录前缀,请参阅RewriteRule - What is matched?
。
您必须将规则更改为
RewriteRule ^product_info.php$ ...
如果您有许多要重写的网址路径,您可能还需要查看RewriteMap
。