2014-09-24 118 views
2

在你说做一些研究之前,我有一个我知道如何重定向301.如何使用动态生成的URL重定向301?

然而,这是一个相当具体的问题。

让我有一种现代重写生效:

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

此输出网址/新闻/条/标题/,但是我最近想删除尾随斜线

所以读取网址/新闻/条/标题,这个很容易做到:

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

然而,当有人进入/新闻/条/标题/ 现在所以我的问题是有一种方式,我们重定向301,所以当用户输入/新闻/文章/标题/他们被定向到/新闻/文章/标题

我记得我想这工作的所有动态产生的网址..

回答

0

您应该实际上让斜线可选:

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

要删除尾随/斜线从URL中使用的重定向规则:

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

我真的很喜欢这个可选的斜线方法!但删除一个是我感觉最好的解决方案 – 2014-09-24 11:20:59

1

使用R=301标志是这样的:

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

详情请参阅apache documentation有关标志