Создать обработчик Catch-All в PHP?

Я хочу, чтобы файл PHP зависел и управлял тем, что произойдет, когда пользователи посещают:

http://profiles.mywebsite.com/ SOMETEXT

sometext изменяется.

например. Это может быть someuser, это может быть john и т.д., Тогда я хочу, чтобы PHP файл обрабатывал запросы из этой структуры.

Моя основная цель состоит в том, чтобы некоторый PHP файл перенаправлял пользователей моего сайта на их соответствующие профили, но их профили отличаются от этой структуры URL. Я нацелен на то, чтобы предоставить моим пользователям несколько удобных для понимания URL-адресов профиля.

Спасибо тем, кто ответит!

Ответ 1

В конфигурационных файлах Apache [Директивы VirtualHost или Directory] или в файле .htaccess введите следующую строку:

Options -MultiViews

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L,NC,QSA]
</IfModule>

Он будет автоматически перенаправлять все входящие запросы, которые не соответствуют действительному имени файла или каталогу (RewriteCond в указанном выше коде), в файл index.php. Кроме того, как вы видите, параметр MultiViews также должен быть отключен для работы перенаправления - он обычно конфликтует с этими двумя RewriteCond, которые я там помещал.

Внутри index.php вы можете получить доступ к данным REQUEST_URI через переменную $_SERVER['REQUEST_URI']. Вы не должны передавать URI через GET, так как это может загрязнять ваши данные Query-String нежелательным образом, поскольку параметр [QSA] в нашем RewriteRule активен.

Ответ 2

Вы должны использовать правило перезаписи.

В apache (.htaccess) что-то вроде этого:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>

Затем в вашем index.php вы можете прочитать $_GET ['url'] в своем php-коде.

Ответ 3

Вы можете использовать файл .htaccess(http://httpd.apache.org/docs/1.3/howto/htaccess.html), чтобы переписать свой URL-адрес на что-то вроде profiles.websites.com/index.php? page = sometext. Затем вы можете делать то, что хотите, с sometext в index.php.

Ответ 4

Очевидным способом сделать это можно было бы с помощью 404 errorDocument - сэкономить все, что возится с mod_rewrite.

Ответ 5

Если вы не слышали о MVC, время, когда вы его слышите, начинайте с CodeIgniter, простейшим и довольно быстрым, используйте контроллер по умолчанию, и у вас могут быть URL-адреса, например, domain.com/usernam/profile
domain.com/usernam/profile/edit
domain.com/usernam/inbox
domain.com/usernam/inbox/read/messageid Или используйте .htaccess с умом