.htaccess将三个文件名重写为两个目录

时间:2014-08-16 12:38:32

标签: php .htaccess mod-rewrite url-rewriting

使用.htaccess重写三个文件名时遇到一些问题。

基本上是url:domain.com/post.php?category=uncategorized&title=title-of-post&id=1

应改写为

domain.com/uncategorized/title-of-post-1

我找到了如何重写其中一个文件名(例如分类部分),但是如何完成所有这三个,以便类别将在一个目录中,第二个目录将是标题的合并和用破折号分隔的ID?

到目前为止,这是我的代码:

 Options +FollowSymlinks
 RewriteEngine on

 # add a trailing slash
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{THE_REQUEST} \s/+(.*?)[^/][?\s]
 RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301]

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^([\w\d~%.:-]+)/?$ category.php?id=$1 [L,QSA]

我还需要以斜杠结尾的URL。如果不是,它将重定向到它。

1 个答案:

答案 0 :(得分:0)

您可以为post.php插入新规则:

 Options +FollowSymlinks
 RewriteEngine on

 # add a trailing slash
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{THE_REQUEST} \s/+(.*?)[^/][?\s]
 RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301]

 RewriteCond %{REQUEST_FILENAME} -f [OR]
 RewriteCond %{REQUEST_FILENAME} -d
 RewriteRule ^ - [L]

 RewriteRule ^([^/]+)/(.+?)-([^/-]+)/?$ post.php?category=$1&title=$2&id=$3 [L,QSA]

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