2017-10-05 308 views
0

我试图做一个简单的301重定向htaccess的重定向301

http://my-site.com/old-cat/old-sub-cat/ARTICLE_NAME

的.htaccess

的RewriteCond%{REQUEST_URI}^/old-cat/old-sub-cat/(.*)$

重写规则^(。*)$ /新猫/%1 [R = 301,L]

但是 作为结果我得到一个新的类别没有斜线

http://my-site.com/new-catARTICLE_NAME

我在哪里犯了一个错误?

+0

你确定两者之间没有额外的重定向吗?另外,你为什么使用RewriteCond代替'RewriteRule ^/old-dat/old-sub-cat /(.*)$/new-cat/$ 1 [R = 301,L]' – janh

+0

没有额外的重定向和RewriteRule ^/old-dat/old-sub-cat /(.*)$/new-cat/ $ 1 [R = 301,L]返回500错误... 而我只想得到缺少的斜线:) – oshaman

+0

编写问题时,带''%''的'/ new-cat /%1'是错误的,或者你是如何在.htaccess中使用它的?因为正确的方法是使用'$',请参阅@ janh2注释。 –

回答

0

这也应该为你工作,你不需要的RewriteCond都:

RewriteRule ^/?old-cat/old-sub-cat/(.*)$ /new-cat/$1 [R=301,L] 

但你的代码也是正确的。

浏览器往往会记住301重定向,所以它可能是,这是不是从你的服务器在所有但是从你的浏览器来

也可能是一些其他的.htaccess也许在一些其他的目录或服务器配置或者APP自己做一些重定向。

+0

有在子目录中的一个更多的.htaccess RewriteEngine叙述在 #重定向Traili ng斜线如果不是文件夹... RewriteCond%{REQUEST_FILENAME}!-d 重写规则^(。*)/ $/$ 1 [L,R = 301] #拉手前端控制器... 的RewriteCond%{REQUEST_FILENAME}!-d 的RewriteCond%{REQUEST_FILENAME}!-f 重写规则^指数.php [L] #句柄授权标头 RewriteCond%{HTTP:Authorization}。 RewriteRule。* - [E = HTTP_AUTHORIZATION:%{HTTP:Authorization}] oshaman

+0

我觉得完全是愚蠢的,你是绝对正确的 - 我只是忘了清除缓存。两个选项都能正常工作非常感谢你。 – oshaman

+0

这也发生在我身上,而且我也忘记了它,看着这个代码并没有发现任何东西;-) – Webdesigner