我正在尝试使用.htaccess通过使用下面的RewriteRule实现一个SEO友好的URL
RewriteRule ^n/article/([a-zA-Z0-9]+)/$ article.php?title=$1
actaul网址如下所示
http://localhost/n/article.php?title=this-is-the-first-news-article
但我希望它看起来像这样:
http://localohst/n/article/this-is-the-first-news-article
当我应用上面的RewiteRule时,它不会更改为所需的URL
答案 0 :(得分:2)
这应该这样做。你错过了n。不知道为什么你需要单词标题。
RewriteRule ^n/article/title/([a-zA-Z0-9]+)/$ article.php?title=$1
答案 1 :(得分:1)
您必须先捕获查询字符串。您不能使用RewriteRule执行此操作,因为它们忽略查询字符串。我们在这里使用[R]
重定向。如果这对您有用,并且旧URL可能存储在某处作为链接,那么您可能需要指定[R=301]
。请务必删除您网站上的所有旧式链接(包含我们正在重写的上一个链接格式),这样您就不会因未更新链接而受到处罚。
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} title=([^&]+)
RewriteRule ^n/article.php n/article/%1? [R,L]
如果您的网站需要格式化原始版本,您可能还需要在第一个规则之后执行此操作。此规则会将URL重新定向回原始状态,而不会将其显示给最终用户:
RewriteRule ^n/article/(.*) n/article.php?title=$1 [L]
答案 2 :(得分:0)
它将是RewriteRule ^ n / article / title /([a-zA-Z0-9] +)/ $ article.php?title = $ 1