htaccess重写规则无法按预期工作

时间:2014-03-03 11:43:57

标签: wordpress apache .htaccess mod-rewrite

我正在尝试为客户网站重写网址,但它没有按预期工作。

我无法弄清楚我做错了什么。

RewriteRule ^about/sectionreps/(.*)$ http://myclientssite.com/sectionreps/ [r=301,nc]

所以,/ sectionreps /会重定向到/ about / sectionreps /但这不是我想要的。

以下是整个文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^about/sectionreps/(.*)$ http://myclientssite.com/sectionreps/ [r=301,nc]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

# END WordPress 

所以我的问题是为什么url重写不会来自: http://myclientssite.com/about/sectionreps

http://myclientssite.com/sectionreps/

3 个答案:

答案 0 :(得分:1)

您的代码表示/about/sectionreps/*将被重定向到(可能是其他网站)/sectionreps/。不是相反,正如你所暗示的那样(但后来在帖子中反驳)。重定向是你要找的吗?

您的代码需要在输入URI上尾随/。这可能是/about/sectionreps不匹配的原因(但/about/sectionreps/应该)。

RewriteRule ^about/sectionreps(/)?  /sectionreps  [R=301,NC]

应该做的工作。您不需要匹配尾随的内容(.*)$,因为您丢弃它,并且您不需要提供http:位,因为您位于同一个域中。

答案 1 :(得分:0)

尝试在wordpress代码

下添加此代码
#start custom redirects
RewriteCond %{HTTP_HOST} myclientssite.com/about/sectionreps/  [NC]
RewriteRule ^(.*)$ http://myclientssite.com/$1 [L,R=301]
Redirect 301 / http://www.myclientssite.com/sectionreps/
#end custom redirects

答案 2 :(得分:0)

试试这段代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^about/sectionreps(/.*)?$ /sectionreps/$1 [R=301,NC,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>
# END WordPress 

确保在新浏览器中进行测试。