3

我有一个 blog.php 页面,应该从所有这些请求中重定向:

www.site.com/blog #转到 blog.php

www.site.com/blog/id-of-an-entry #goes to blog.php?id=id-of-an-entry

还有国际化版本,例如法语:

www.site.com/fr/blog *# to blog.php?lang=fr

www.site.com/fr/blog/id-of-entry* #to blog.php?lang=fr&id=id-of-entry

.htaccess 更有效的条件/规则是什么?我做了很多尝试,但最终还是绕着圈子走或遵循了许多专门的规则:-) 感谢您的任何见解!

4

2 回答 2

2

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^blog/([^/]+)/?$ /blog.php?id=$1 [L,NC,QSA]

RewriteRule ^blog/?$ /blog.php [L,NC,QSA]

RewriteRule ^([^/]+)/blog/([^/]+)/?$ /blog.php?lang=$1&id=$2 [L,NC,QSA]

RewriteRule ^([^/]+)/blog/?$ /blog.php?lang=$1 [L,NC,QSA]
于 2013-06-05T12:29:24.253 回答
1

我不经常使用这个,所以可以有更好的方法,但这可以帮助你。规则是这样工作的。In()是与您要匹配的变量相对应的变量。比你可以参考他们$1等等。例如news/local将它们重定向到文件news-local.php,您可以使用相同的系统来匹配您获取的变量。

RewriteRule ^([a-z]+)/([a-z]+)$ $1-$2.php
于 2013-06-05T12:34:54.557 回答