自定义PHP / SQL CMS htaccess规则

时间:2018-05-11 11:08:09

标签: php sql .htaccess mod-rewrite

我使用名为blog-post.php的动态帖子模板制作了一个自定义PHP / Sql cms

我正在拉这样的内容:

http://www.example.com/news/blog-post.php?slug=sample-slug-from-database

这允许我使用相同的模板提取任意数量的帖子,从数据库中提取信息。

我花了4个小时尝试用htaccess实现以下功能..

  1. 强制使用尾部斜杠而不是.php扩展名
  2. 强制博客帖子网址显示为:
  3. http://www.example.com/sample-slug-from-database/

    而不是

    http://www.example.com/news/blog-post.php?slug=sample-slug-from-database

    非常感谢任何帮助。

2 个答案:

答案 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]