我使用名为blog-post.php的动态帖子模板制作了一个自定义PHP / Sql cms
我正在拉这样的内容:
http://www.example.com/news/blog-post.php?slug=sample-slug-from-database
这允许我使用相同的模板提取任意数量的帖子,从数据库中提取信息。
我花了4个小时尝试用htaccess实现以下功能..
http://www.example.com/sample-slug-from-database/
而不是
http://www.example.com/news/blog-post.php?slug=sample-slug-from-database
非常感谢任何帮助。
答案 0 :(得分:0)
虽然您首选的网址方法是重定向所有内容,例如 / sample-slug-from-database / ,我认为最好采用不太严格的实施,例如 /消息/采样段塞从数据库/
无论哪种方式,这是第一个实现:
# URL
# INPUT http://www.example.com/random-slug/
# OUTPUT http://www.example.com/news/blog-post.php?slug=random-slug
RewriteEngine On
RewriteRule ^(.*)\/$ news/blog-post.php?slug=$1 [L,QSA]
第二种方式:
# URL
# INPUT http://www.example.com/news/random-slug/
# OUTPUT http://www.example.com/news/blog-post.php?slug=random-slug
RewriteEngine On
RewriteRule ^news\/(.*?)(\/(.*?)*)$ /news/blog-post.php?slug=$1 [L]
答案 1 :(得分:0)
对于其他任何挣扎的人 - 这是我的最终代码:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
RewriteEngine On
RewriteRule ^(.*)\/$ blog-post.php?slug=$1 [L,QSA]