我尝试做的是在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的内容。
我不知道如何实现这一目标。 有什么想法吗?
答案 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]