2013-11-29 6 views
0

Я создаю простой веб-сайт php со сменными темами. У меня есть каталог с именем MyThemes с аа папку внутри, содержащий следующие файлы header.php, sidebar.php, page.php, footer.php теперь проблема в том, что я хочу, чтобы отобразить страницу из базы данных с помощью файла page.php выбранной темы, но генерируемая ссылка будет что-то вродеСсылка на основной сайт Php

website/MyThemes/ThemeName/page.php?id=somePageID 

Я хочу изменить, что если можно что-то вроде

website/pages/somePageID 

У меня есть небольшой опыт работы с PHP, но, видимо, этого недостаточно. Поэтому любая помощь будет принята с благодарностью.

+0

использовать любые рамки, такие как codeigniter, cakephp и т. Д. –

+0

Вы можете добиться этого, изменив файл .htaccess. Twitter и Facebook делают подобные вещи, чтобы дать каждому пользователю уникальный, читаемый URL. – Charles

ответ

2

Обычно это делается путем перезаписи URL-адресов на веб-сервере: сервер гарантирует, что /url/like/this преобразуется в (например) something.php?like=this. После этого нет никакой разницы в приложении. Для этого Apache использует mod_rewrite. Если вы использовали Django, это было бы настроено в файлах urls.py.

Вы все же можете упростить свои URL-адреса до website/pages.php?id=n, сохранив тему в переменной cookie или session.

Кроме того, ваши текущие пути к файлам предполагают, что вы дублировали страницы для разных тем: это никогда не будет хорошей идеей. Не повторяйся!

+0

Что вы имеете в виду, я дублировал страницы для разных тем? – Adrao

+0

ваша текущая схема именования предполагает, что у вас есть такая же логика в 'ThemeA/page.php', как в' ThemeB/page.php'. –

+0

Так почему же это проблема? Я считаю, что Wordpress использует то же самое – Adrao

1

Вы можете использовать дружественные ссылки и регулярные выражения:

См

http://www.phpriot.com/articles/search-engine-urls

В этой статье вы найдете инструкции по использованию HTAccess:

Пример:

<IfModule mod_rewrite.c> 
RewriteEngine on 
#rule not apply directories 
RewriteCond %{REQUEST_FILENAME} !-d 
#rule not apply files 
RewriteCond %{REQUEST_FILENAME} !-f 

#Rule to page 
RewriteRule ^page/$ page.php 
RewriteRule ^page$ page.php 
RewriteRule ^page/(.*)/(.*)?$ page.php?id=$1&des=$2 
RewriteRule ^page/(.*)?$ page.php?id=$1 
</IfModule> 
Смежные вопросы