Пользовательские правила PHP / SQL CMS htaccess - PullRequest
0 голосов
/ 11 мая 2018

Я создал собственный PHP / Sql cms с динамическим шаблоном поста под названием blog-post.php

Я загружаю содержимое следующим образом:

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

Это позволяет мне извлекать любое количество постов, используя один и тот же шаблон, извлекая информацию из базы данных.

Я потратил 4 часа, пытаясь добиться следующего с помощью htaccess.

  1. Принудительно использовать косую черту вместо расширения .php
  2. Принудительно отображать URL-адреса сообщений блога в виде:

http://www.example.com/sample-slug-from-database/

вместо

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

Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Для всех, кто борется - это мой окончательный код:

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]
0 голосов
/ 11 мая 2018

Хотя ваш предпочтительный метод URL-адреса - перенаправить все, например, / sample-slug-from-database / , я думаю, что было бы лучше вместо этого перейти на менее строгую реализацию, например / news / 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...