|
|
|
| Вот есть ссылки такового вида
http://test1.ru/showstat.php?selfile=hosting
|
хочу сделать ссылки вида
http://test1.ru/hosting.php
|
но точто я сделал не работает
вот .htaccess
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^/([a-z])$ /showstat.php?selfile=$1
|
| |
|
|
|
|
|
|
|
для: zavragnov
(30.10.2005 в 13:56)
| | А не хотите вот так сделать?
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([^/]*)\.html$ /showstat.php.php?selfile=$1
|
Не существующие страницы обозначать расширением .html, а существующие php. Тогда можно составить простое, однозначно-работающее, правило. Иначе трудно отделить реальную страницу от "нереальной".
http://test1.ru/hosting.html
|
Преобразовывается в
http://test1.ru/showstat.php?selfile=hosting
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(01.11.2005 в 23:16)
| | А как такое превратить в нормальный вид
http://www.test1.ru/showportfolio.php?razdel=foto&msg=%3Cp%3E%CE%EA%F3%EF%E0%ED%F2%FB%3C%2Fp%3E&cont=muravey.jpg&ohter=%CE%EA%F3%EF%E0%ED%F2%FB%0D%0A
|
например чтобы это выглядело примерно так
http://www.test1.ru/foto/muravey.jpg/page.html
|
Вот я тут понаписал но это не работает
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([^/]*)\.html$ /showstat.php?selfile=$1
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /showportfolio.php?razdel=$1&msg=$2&cont=$3&ohter=$4
|
| |
|
|
|
|
|
|
|
для: zavragnov
(20.11.2005 в 14:17)
| | RTFM http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html.en#rewriterule
"Query String_
The Pattern will not match against the query string. Instead, you must use a RewriteCond with the %{QUERY_STRING} variable. [blablabla]. When you want to erase an existing query string, end the substitution string with just the question mark. "
используй RewriteCond
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{QUERY_STRING} ^razdel=(.+)&msg=(.+)&cont=(.+)&ohter=(.+)$
RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+)\.html$ /showportfolio.php?razdel=$1&msg=$2&cont=$3&ohter=$4
|
| |
|
|
|
|
|
|
|
для: goddamn
(20.11.2005 в 20:43)
| | Я в английском не силен, но все равно спасибо за ссылку.
Вот такой вопрос, а каже дудет выглядет url, что то я не как не пойму как вызвать эти страницы
>
RewriteEngine on
>Options +FollowSymlinks
>RewriteBase /
>RewriteCond %{QUERY_STRING}
>^razdel=(.+)&msg=(.+)&cont=(.+)&ohter=(.+)$
>RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+).html$
>/showportfolio.php?razdel=$1&msg=$2&cont=$3&ohter=$4
|
| |
|
|
|
|
|
|
|
для: zavragnov
(21.11.2005 в 19:16)
| | не понятен вопрос ?! ...
RewriteCond %{QUERY_STRING} ^razdel=(.+)&msg=(.+)&cont=(.+)&ohter=(.+)$
означает, что если строка запроса (это то,что после ?) равна razdel=любойтекст&=любойтекст и т.д. ... , то сработает правило RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+).html$ /showportfolio.php?razdel=$1&msg=$2&cont=$3&ohter=$4
тобишь каждый набор в скобках будет подставлен в $1 $2 $3 и $4 соответственно ...
в адресной строке будет написано "красиво" :), а страница загрузится та, что нужна, т.е. со всеми этими параметрами ...
примерно ясно ? | |
|
|
|
|
|
|
|
для: zavragnov
(30.10.2005 в 13:56)
| | А как сделать обратное преобразование типа
http://site.ru/art.php?p=file ---> http://another_site.ru/art/file.html
|
Чтобы при переходе от динамических адресов к статическим старые ссылки не пропадали, а постепенно заменялись статическими.
В корневой директории site.ru пишу так:
RewriteRule ^([a-z]+)\.php\?p=([a-z]+)$ http://another_site.ru/$1/$2\.html
|
Вообще не переходит на другой сайт, т.е. как будто совпадения с шаблоном нет
А если убираю слеш перед '?' и вместо знака равенства '=' пишу вопрос '?', то переход есть, но выдаёт вот что:
http://another_site.ru/art/p.html?p=file
|
т.е не то, что надо. | |
|
|
|
|
|
|
|
для: Alex14
(23.11.2005 в 13:04)
| | об же этом несколькими постами выше было сказано ?!
просто RewriteRule ^([a-z]+)\.php\?p=([a-z]+)$ не будет работать, см. выше на 3 поста
и если тебе надо, чтоб ПЕРЕХОДИЛ на другой сайт, то нужно использовать еще флаг [R].
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html.en#rewriterule | |
|
|
|
|
|
|
|
для: goddamn
(23.11.2005 в 13:43)
| | Ну и где в той ссылке сказано, КАК это сделать?
Кому интересно, решение такое:
RewriteCond %{QUERY_STRING} ^p=(.+)
RewriteRule ^([^/]+)\.php http://another_site.ru/$1/%1.html?
|
Преобразует http://site.ru/dir.php?p=page ---> http://another_site.ru/dir/page.html
Кстати, переход есть, что с флагом [R], что без него. | |
|
|
|
|
|
|
|
для: Alex14
(25.11.2005 в 13:36)
| | >Кому интересно, решение такое:
>Преобразует http://site.ru/dir.php?p=page ---> http://another_site.ru/dir/page.html
А для чего можно применить такое преобразование?
Обычно делают наоборот - чтобы сделать "красивые" URL?
>Кстати, переход есть, что с флагом [R], что без него.
Флаг [R] приводит к внешнему редиректу. Т.е. браузеру посылает заголовок, что необходимо сделать редирект по новому адресу. Если флаг [R] отсутствует, то apache сам подставляет другую страницу, не сообщая об этом браузеру. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(25.11.2005 в 20:50)
| | >А для чего можно применить такое преобразование?
>Обычно делают наоборот - чтобы сделать "красивые"
>URL?
Для того, чтобы при переходе от динамических адресов страниц к статическим (которые генерируются тоже динамически, но имеют уже статический вид), первые ПОСТЕПЕННО замещались вторыми. Например, чтобы при переходе из закладки браузера или из поисковых систем не возникало ошибки 404. Т.е. такой переход к "красивым" адресам от "некрасивых" осуществляется почти незаметно. | |
|
|
|
|
|
|
|
для: Alex14
(25.11.2005 в 21:59)
| | А ошибки 404, как правило, не возникает. Ведь страница index.php реально существует и, соответственно, все обращения к ней остаются действительны. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(25.11.2005 в 23:06)
| | >А ошибки 404, как правило, не возникает. Ведь страница
>index.php реально существует и, соответственно, все
>обращения к ней остаются действительны.
Во-первых, у меня сайт на другой домен переезжает, во-вторых, я заменил несколько шаблонных файлов на один (index.php) и изменил число параметров в QUERY_STRING. Поэтому ошибка будет. А в-третьих, если такое преобразование не сделать, то "некрасивые" ссылки не заменятся "красивыми", которые поисковые системы любят больше. | |
|
|
|