如何使用htaccess文件(mod_rewrite)模拟目录?

时间:2014-01-11 02:41:04

标签: apache .htaccess mod-rewrite

我尝试做的是在htaccess文件的帮助下模拟目录。 我的网站有这样的文件:

http://www.domain.com/filename.php?t=yeah-a-title-2014

现在,我想将上面的URL重写为以下内容:

http://www.domain.com/directory1/yeah-a-title-2014/

如果访问者输入两个网址中的一个,他应该在地址栏中看到第二个网址,但应显示filename.php?t = yeah-a-title-2014的内容。

我不知道如何实现这一目标。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这更好地称为SEO-urls(搜索引擎优化),SEF-urls(搜索引擎友好),花哨的网址和更多这些条款。这些结构的基本问题是,如果没有正确实现它们会导致无限循环,因此通常使用THE_REQUEST技巧,因为%{THE_REQUEST}总是等于请求,即使url被重写,如果内部重写匹配,则反过来阻止外部重定向匹配。

#External redirect
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /filename\.php\?t=(.*)\ HTTP
RewriteRule ^ /directory1/%2/ [R,L]
#Change [R,L] to [R=301,L] after ALL rules do what you want them to do, and before your site goes live

#Internal rewrite
RewriteRule ^directory1/([^/]+)/?$ /filename.php?t=$1 [L]