Вернуть контент на основе REQUEST_URI на PHP - PullRequest
0 голосов
/ 17 июня 2020

Скажем, мой домен - «www.miraj.com». Если пользователи нажимают на ссылку «www.miraj.com/childhood-of-miraj», я хочу проверить свою базу данных, есть ли какие-либо сообщения с заголовком «children-of-miraj», они должны отображаться, иначе будет показана страница 404. Но поскольку нет каталога (папки) с именем «children-of-miraj», он сразу возвращает страницу 404. Как я могу это сделать?

1 Ответ

1 голос
/ 17 июня 2020

Это зависит от httpd , который вы используете (Apache или Nginx).

Для Apache вам следует отредактировать свой .htaccess файл должен выглядеть следующим образом:

RewriteEngine On    # Turn on the rewriting engine 
RewriteRule    ^([A-Za-z-]+)/?$ FileToHandleDatabaseSearch.php?title=$1 [NC,L]

Это преобразует URL-адрес www.miraj.com/childhood-of-miraj в www.miraj.com/FileToHandleDatabaseSearch.php?childhood-of-miraj на сервере, а не в адресной строке браузера.
FileToHandleDatabaseSearch. php

if (isset($_GET['title'])) {
    //...Search DB for $title
    //If title exists display page with title
    //If title does not exist display 404 page not found
}

Для NGINX вы редактируете это в файле conf www.miraj.com.conf в /etc/nginx/sites-available должно выглядеть так:

server {
    listen 80;
    listen [::]:80;

    root /path/to/project/root;
    server_name www.miraj.com;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    rewrite ^([A-Za-z-]+)/?$ FileToHandleDatabaseSearch.php?title=$1 last;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }

}

Вы бы хотели добавить к путям префикс c, чтобы избежать конфликтов URL-адресов. Например, если childhood-of-miraj является заголовком mov ie, пусть условия перезаписи будут rewrite ^/movies/([A-Za-z-]+)/?$ "/path/to/project/root/FileToHandleDatabaseSearch.php?title=$1" last;

Вы можете посетить Apache Правила перезаписи , чтобы узнать больше .htaccess правила, которые вы можете использовать, и Nginx правила перезаписи для получения дополнительных Nginx правил, которые вы можете использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...