Как создать каталог, как URL для каждой страницы на сайте - PullRequest
3 голосов
/ 07 октября 2010

У меня есть контент-сайт, который распространяется на несколько страниц, но есть только 1 файл index.php, который извлекает данные из базы данных на основе номера страницы.

В настоящее время направление URL должно быть примерно таким:domainname.com/Page/content.php?page=3

Я заметил, что довольно много сайтов имеют структуру, похожую на директорию для таких URL, как:

domainname.com/Page/3

Я знаю, как изменить ее на domainname.com/Page/?page=3 но я хочу удалить ?page часть.

Как я могу это сделать, не создавая по отдельности каталог для каждой страницы, содержимое продолжает расти, следовательно, меняется для каждой страницы.

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 октября 2010

Эти сайты используют mod_rewrite для "перезаписи" запрошенного URL с помощью регулярного выражения

EDIT:

переписать это: domainname.com/Page/3

к этому: domainname.com/Page/content.php?page=3

будет выглядеть так в файле .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z]*)/(.*)$ /content.php/$1/page=$2 [L]
</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 /error_with_mod_rewrite.html
</IfModule>

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

0 голосов
/ 02 января 2012

«URL Rewrites» - это функция, которая выполняет пользовательскую структуру URL.Это очень распространенная и важная функция на большинстве распространенных веб-серверов.Перезаписи URL доступны не только в Apache.Например,

Apache использует модуль Mod_Rewrite.

Nginx использует директивы «Rewrite» и «Try_Files».

В Cherokee встроена функция, настраиваемая из adminвеб-панель.

Есть еще много примеров, с которыми я работал.Кроме того, я слышал, что некоторые проекты вносят изменения в программный код.Это стало более распространенным с новыми языковыми веб-серверами.

...