.htaccess ModREwrite

Это совершенно новая область для меня, поэтому, пожалуйста, наберитесь терпения. Я хочу создать «постоянные ссылки» для динамического сайта, над которым я работаю. На данный момент на все страницы (не на индекс) ссылаются с помощью переменной 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 URL-адреса и преобразует его в страницу. php?ID=122 ?

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


person RussP    schedule 03.05.2010    source источник


Ответы (1)


Вопрос 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-адреса.

person Fabian    schedule 03.05.2010
comment
Привет, Фабиан, спасибо за это, простой вопрос, глядя на ваше правило перезаписи - будет ли работать RewriteRule ^/([\w-]+).html$ /page.php?title=$1 [L,R=301]? то есть вынуть страницу/ - person RussP; 03.05.2010
comment
Да, это было бы. Это заменит /blabla.html на /page.php?title=blabla. - person Fabian; 03.05.2010
comment
Да, и [\w-]+ просто означает любую букву или цифру и дефис с 1 или более повторениями. Вы должны изменить это в соответствии с вашими потребностями. - person Fabian; 03.05.2010
comment
Спасибо Фабиан, помощь очень ценится - person RussP; 03.05.2010