.htaccess从多个目录重定向到单个页面

时间:2013-06-05 12:20:48

标签: apache .htaccess mod-rewrite

我有一个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更有效和更有效的cond /规则?我已经做了很多尝试,但结束了走路或与许多专门的规则:-)感谢您的任何见解!

2 个答案:

答案 0 :(得分:2)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_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]

答案 1 :(得分:1)

我没有使用这个常规,所以可以有更好的方法,但这可以帮助你。规则就是这样的。 ()中的变量与您想要匹配的变量相对应。你可以通过$1等来引用它们。例如,news/local会将它们重定向到文件news-local.php,您可以使用相同的系统来匹配变量。

RewriteRule ^([a-z]+)/([a-z]+)$ $1-$2.php