.htaccess条件重写和文件结构

时间:2013-02-12 20:00:18

标签: php apache .htaccess

要将其分解,这就是我的站点地图的样子。

http://website.com/home
http://website.com/contact
http://website.com/support

使用我的index.php处理程序处理GET语句index.php?home,index.php?contact和index.php?support

目前,我的.htaccess看起来像这样:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  /([^/]+)/?$  [NC]
RewriteRule .*   index.php?%1  [L]

到目前为止,这种方法效果很好,但它有限。我正在集成一个我用PHP设计的迷你博客,它接受查询字符串看起来如此:

http://site.com/blog.php?y=2013&m=02&d=12&title=welcome-to-site-blog

现在,我想保留网站的根文件结构,并整合博客文件结构。希望看起来像这样:

http://site.com/2013/02/12/welcome-to-site-blog

任何帮助都会很棒。我理解条件语句是必需的,但我对htaccess几乎没有经验。

提前致谢, 克里斯

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}   !blog\.php                           [NC]
RewriteCond %{REQUEST_URI}   ^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?  [NC]
RewriteRule .  blog.php?key1=%1&key2=%2&key3=%3&key4=%4         [L,NC]

无声地映射

http://site.com/var1/var2/var3/var4

要:

http://site.com/blog.php?key1=var1&key2=var2&key3=var3&key4=var4

假定所有varN个字符串都是可变的,而脚本名称blog.php是固定的,但可以是任何名称。如果更改,则替换规则集中的所有实例。

对于永久性和可见的重定向,请将[L,NC]替换为[R=301,L,NC]