Подменить URL
Собственно, такой возник вопрос.
Допустим, у меня есть некая БД статей сайта, у каждой статьи есть ID. В URL выглядит это таким образом: site.ru/pages/?id=N, где N - ID статьи. Но вот что мне стало интересно: можно ли как-нибудь сделать так, чтобы для каждой статьи я мог указывать директорию, в БД. Например, по мимо ID в БД ещё будет поле DIR, в котором хранится директория к статье. Чтобы выглядело таким образом: site.ru/pages/MyState/ или /site.ru/pages/MyState/Bla Есть конечно идея организовать таким образом: site.ru/?/pages/MyState/ и парсить GET, но это не есть сахар. P.S.: для каждой статьи создание папки с index.php не катит. Нужно чтобы всё работало от одного index.php, который находится в папке pages. P.P.S.: подмена URL через JavaScript с помощью history.pushState тоже не катит. Буду благодарен за любую помощь. :) |
Если статья однозначно идентифицируется по id, а твой DIR - чисто для красоты, то пропиши в htaccess внутренний редирект, чтобы все запросы к pages/* редиректились в /pages/index.php.
При выводе ссылок подставляй поле из базы. Можешь ко всему прочему сделать ЧПУ ссылки, заменив id красивым алиасом (и красиво, и полезно для SEO). |
danik.js, так я и хочу сделать ЧПУ. Я просто никогда с этим не сталкивался, всё делал просто по ID.
Если редирект, то ведь в ссылке будет отображаться URL редиректа получается, site.ru/pages/index.php. А мне нужно, чтобы именно в URL был ЧПУ типо site.ru/pages/lalala/. Не создавать же для каждой стать папку с index.php, я уверен, что можно как-то сделать по человечески. Можешь подробнее объяснить, что и как? Буду благодарен. А то я не вникаю как такое сделать. |
Ruslan_xDD,
из .htaccess делаешь перенаправление всех запросов на роутер, который разбирает и анализирует запрашиваемый url, ну а потом лезешь в БД и выводишь что нужно. |
Вот код моего стааарого .htaccess, мб пригодится.
AddDefaultCharset utf-8 php_flag magic_quotes_gpc off RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^.*$ index.php [L] |
Safort, ну а после перенаправления URL нормальный останется? Не изменится на тот, на который идёт перенаправление?
|
Цитата:
|
Ruslan_xDD,
для пользователя будет всё так же как и раньше. Но тебе теперь не придётся по идиотски для каждого url с разными путями создавать новую папку и файл index.php в ней. Вместо этого будет один файл, в котором ты сможет обрабатывать все входящие запросы. Да что я объясняю?) Запусти это на локалке, зайди под разными адресами и увидишь, что всё обрабатывает единый index.php. Есть, конечно, вариант по лучше - использовать питон или ноду на бэке) |
Safort, спасибо, сейчас по тестирую. :) А сам URL откуда идёт перенаправление как получить в index.php?
|
Ruslan_xDD,
глобальный $_SERVER['REQUEST_URI'] или что-то типа него. |
Часовой пояс GMT +3, время: 03:14. |