---- --- EDIT
我刚刚意识到我对问题的解释缺少一条重要的信息。
如果存在第二个参数,则网址应仅重定向。
所以规则应该是:
重定向任何包含/ d /的网址,仅在网址中找到/ d2 / 的情况下。
----结束Edit_ _
我需要301将包含特定参数的网站上的所有网址重定向到同一网址,但包含其他目录。所有需要重定向的URL都包含某个目录:/ d /例如:
http://www.mysite.com/category1的 / d / 子类别1 / subdirectory2 /
- 应重定向到 -
http://www.mysite.com的 / newdirectory / 类别1的 / d / 子类别1 / subdirectory2 /
任何需要重定向的URL都有一个共同点,就是它们都包含URL中的目录/ d /,它始终紧跟在“category”目录之后,如上面的示例URL中的粗体所示。然后,我想在类别目录前插入一个额外的目录,如上面示例URL中的粗体所示。 URL的其余部分将保持不变。
任何人都可以帮忙吗?我对mod_rewrite比较陌生,并且意识到如果我没有把它弄好的话,我可能会弄得一团糟。
提前感谢任何能提供hlep的人
:)
答案 0 :(得分:3)
试试这个(编辑以反映有问题的变化):
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^.*/d/.* [NC]
RewriteCond %{REQUEST_URI} ^.*/d2/.* [NC]
RewriteCond %{REQUEST_URI} !/newdirectory/ [NC]
RewriteRule ^(.*)/d/(.*)$ http://www.mysite.com/newdirectory/$1/d/$2 [R=301,L]
答案 1 :(得分:0)
尝试将以下内容添加到您网站根目录中的htaccess文件中。
RewriteEngine On
RewriteBase /
#if the url contains a /d2/ [NC]
RewriteCond %{REQUEST_URI} /d2/ [NC]
RewriteRule ^([-a-zA-Z0-9]+/d/[-a-zA-Z0-9]+/[-a-zA-Z0-9]+/)$ /newdirectory/$1 [L,R,NC]