重定向任何具有特定关键字的网址

时间:2016-11-02 17:46:41

标签: .htaccess

尝试将网址重定向到包含/for-your-practice/的特定网址。 如果我们知道该网址包含for-your-practice,只需将其重定向到我想要的网址即可。这将是https://www.example.com/first/second/order/shop/product-category/for-your-practice/ 到目前为止尝试过的解决方案:
第一:

Redirect /for-your-practice/ 
https://www.example.com/first/second/order/shop/product-category/for-your-practice/

第二

Redirect 302 https://www.example.com/first/second/order/shop/for-your-practice/ https://www.example.com/first/second/order/shop/product-category/for-your-practice/

第三

#RewriteCond %{REQUEST_URI} www.example.com/first/second/order/shop/product-category/for-your-practice [NC]
#RewriteRule ^(.*)$ /for-your-practice [R,L]

第四:

 RewriteCond %{QUERY_STRING} /for-your-practice/
 RewriteRule .*$ http://www.example.com/first/second/order/shop/product-category/for-your-practice [L,R=301]

不幸的是,他们都没有工作,我在这里做错了什么? .htaccess

1 个答案:

答案 0 :(得分:1)

最简单的可能就是使用apache的重写模块:

RewriteEngine on
RewriteCond %{REQUEST_URI} /for-your-practice/
RewriteRule ^ https://www.example.com/first/second/order/shop/product-category/for-your-practice/ [R=301]

为此,必须适用一些先决条件:

  • 必须启用.htaccess tyle文件的解释
  • 必须加载重写模块
  • .htaccess样式文件必须位于DocumentRoot
  • .htaccess样式文件必须可由http服务器进程
  • 读取

使用其他RewriteCond的原因是,网址中的前一个斜杠可能会引发RewriteRule样式文件中.htaccess的问题。通常,您应始终更喜欢将此类规则放在http服务器主机配置中,而不是使用.htaccess样式文件。这些文件非常容易出错,难以调试,它们确实会使服务器变慢,通常不需要。这些文件仅作为使用主机配置(读取:非常便宜的托管提供商)或需要编写自己的重写规则的应用程序(显然是安全噩梦)。