使用.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。如果不是,它将重定向到它。
答案 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]