如何使用动态生成的URL重定向301?

时间:2014-09-24 09:56:50

标签: php apache .htaccess mod-rewrite redirect

在你做一些研究之前,我知道如何用301重定向。

然而,这是一个非常具体的问题。

所以我有一个有效的Mod Rewrite:

RewriteRule ^/news/article/([^/]*)/$ /news/article.php?title=$1 [L]

这会将网址输出到/ news / article / title /,但我最近想删除尾部斜杠

所以网址读取/ news / article / title,这很容易完成:

RewriteRule ^/news/article/([^/]*)$ /news/article.php?title=$1 [L]

但是现在有人进入/ news / article / title /

所以我的问题是有一种方法让我们重定向301,所以当用户输入/ news / article / title /时,他们会被定向到/ news / article / title

请记住,我希望这适用于所有动态生成的URL ..

2 个答案:

答案 0 :(得分:1)

使用R=301标志,如下所示:

 RewriteRule ^/news/article/([^/]*)/$ /news/article/$1 [R=301]
 RewriteRule ^/news/article/([^/]*)$ /news/article.php?title=$1 [L]

有关标志的详细信息,请参阅apache documentation

答案 1 :(得分:0)

实际上你应该使尾随斜杠可选:

RewriteRule ^/?news/article/([^/]*)/?$ /news/article.php?title=$1 [L,QSA]

要从网址中删除尾随/斜杠,请使用此重定向规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L,NE]