URL重写条件&参数

时间:2012-01-19 15:24:50

标签: .htaccess mod-rewrite http-status-code-301

---- --- 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的人

:)

2 个答案:

答案 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]