2012-04-26 4 views
1

Пожалуйста, успокойтесь, поскольку это совершенно новый мир с моей стороны.Довольно URL-адреса с php и .htaccess

Так я построил и маленькие К и с помощью GET для управления PageId или страниц постоянной ссылки в url.I есть скрипт работают нормально, когда только проходя 1 переменные через строку запроса

Например мой HTAccess:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?p=$1 
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?p=$1 

Затем я могу позвонить своим страницам по id или permalink в моем индексном файле. Одна вещь, которую я не могу понять, - это включить родительскую постоянную ссылку в URL-адрес, когда вызывается дочерняя страница.

Другой пример. Если я позвоню странице, которая является дочерним родителем:

http://site.com/index.php?p=post-title 

если пост-заголовок является потомком родительского титула; Как я могу использовать url

http://site.com/parent-title/post-title? 
+0

Вы говорите о чем-то вроде того, когда кто-то запрашивает 'http: // site.com/parent-title/post-title', запрос получает переписан на ваш контроллер index.php, например '/index.php? p = post-title & parent = parent-title'? –

+0

Я подумал об этом, но мне было интересно, есть ли способ автоматически включить родительский титул, когда вы вызываете только заголовок . Я уверен, что есть способ, но mod_rewrites для меня - все, кроме английского. Но ответ на ваш вопрос. Да, мне понравилось то, что вы предложили, но все еще сохраняете чистые URL-адреса. –

+0

Итак, вы имеете в виду: '/index.php? P = parent-title/post-title'? –

ответ

0

Во-первых, мы можем поместить весь наш код в файлы Apache .htaccess. Это может выглядеть примерно так:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^users/(\d+)*$ ./profile.php?id=$1 
RewriteRule ^threads/(\d+)*$ ./thread.php?id=$1 
RewriteRule ^search/(.*)$ ./search.php?query=$1 

Давайте начнем с верхней и работать наш путь вниз, чтобы лучше понять, что здесь происходит. Первая строка устанавливает среду, чтобы следовать символическим ссылкам с помощью директивы Options. Это может быть или не быть необходимым, но некоторые веб-хосты используют символические ссылки (аналогичные псевдониму в MacOSX или ярлыки - это Windows) для обычных ошибок HTTP-запроса, и они обычно являются символическими файлами или, по крайней мере, так я понимаю рассуждения. Затем мы расскажем Apache, что мы будем использовать Rewrite Engine. Следующие две строки очень, очень важны, они ограничивают переписывание URL только теми путями, которые на самом деле не существуют. Это предотвращает, например, приведенные ниже правила example.com/images/logo.png. Первый предотвращает существующие каталоги с флагом! -d, а второй с! -f означает игнорировать существующие файлы. Следующие три строки являются действительными командами перезаписи URL. Каждая строка создает правило, которое пытается сопоставить шаблон регулярных выражений с входящим URL-адресом

Смежные вопросы