.htaccess ModREwrite - PullRequest
       5

.htaccess ModREwrite

1 голос
/ 03 мая 2010

Это совершенно новая область для меня, поэтому, пожалуйста, будьте терпеливы. Я хочу создать постоянные ссылки для динамического сайта, над которым я работаю. На данный момент ссылки на все страницы (не на индекс) указаны с помощью переменной ID:

http://www.domainname.com/page.php?ID=122 (etc)

Я хочу создать подходящее правило перезаписи, чтобы используемый URL-адрес был больше похож на этот:

http://www.domainname.com/page/'pagetitle'.html (could be .php doen't matter)

Заголовок страницы хранится в базе данных и, очевидно, напрямую связан с идентификатором

Правильно ли я думаю, что правило перезаписи будет примерно таким?

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)ID=([^&]+)(&+(.*))?$

RewriteRule ^page\.php$ /page/%3?%1%5 [L,R=301]

Мой идеал - просто создать

http://www.domainname.com/'pagetitle'.html

Но абсолютно не знаю, как это сделать.

Теперь другой вопрос / подвопрос.

Если перезапись работает, т.е. вы набираете http://www.domainname.com/page/'pagetitle'.html в адресную строку браузера, работает ли файл htaccess «другим способом» при доступе к странице http://www.domainname.com/page.php?ID=122 или мне нужно создать функцию взять бит «pagetitle» .html и преобразовать его в page.php? ID = 122?

Также, извините, но это все новое; если я создам карту сайта (xml или php и т. д.), используя http://www.domainname.com/page/'pagetitle'.html, перейдут ли пауки SE на http://www.domainname.com/page.php?ID=122? или мне нужно будет создать карту сайта, используя переменные ID?

1 Ответ

1 голос
/ 03 мая 2010

Вопросы 1 и 2: Условие не требуется в этом случае. Используйте это так:

RewriteRule ^/page/([\w-]+).html$ /page.php?title=$1 [L,R=301]

Это преобразует /page/blabla.html до /page.php?title=blabla Вам нужно найти нужную страницу, используя параметр title в page.php

Вопрос 3: Я предлагаю вам никогда не использовать вариант URL-адреса строки запроса ни в одной из ваших якорных ссылок или в XML-карте сайта. Таким образом, пауки узнают только о дружественных URL.

...