Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > modrewrite как сделать общее правило


Автор: americanets 12.12.2006, 12:34
что необходимо написать в .htaccess чтоб все ссылки указывали на файл pages.php , 
но ссылки news/ news/11/22/2006/2/ на news.php 

ссылки foto/group1/f1/... на foto.php

?  smile 

Автор: Wolf1994 12.12.2006, 13:47
Код

RewriteRule ^news\/([0-9\/]+)\/$ news.php?query=$1 [L,NS]
RewriteRule ^foto\/group([0-9]+)\/f([0-9\/]+)\/$ foto.php?query=$1&query2=$2 [L,NS]
RewriteRule ^pages(.*)$ pages.php?query=$1 [L,NS]

Автор: vasac 12.12.2006, 13:48
<!-- Не успел -->

Автор: americanets 12.12.2006, 13:59
тут понятно 
Код

RewriteRule ^news\/([0-9\/]+)\/$ news.php?query=$1 [L,NS]
RewriteRule ^foto\/group([0-9]+)\/f([0-9\/]+)\/$ foto.php?query=$1&query2=$2 [L,NS]


а вот можно чтоб на  pages ссылки указывали любые, те stranica stranica2 chtoto/chtoto/ 
те примерно так, но тогда не работают другие, просто постоянно дописывать хтаццесс не хочется, не удобно 

RewriteRule ^(.*)$ pages.php [L,NS]

Автор: Wolf1994 12.12.2006, 16:22
Вот так, для перезаписи URL вида: page/sub/1-2/

Код

RewriteRule ^([A-Za-z/0-9-]+)$ /pages.php?query=$1 [L,NS]


Так почему-то не работает:
Код

RewriteRule ^(.+)$ /pages.php?query=$1 [L,NS]
RewriteRule ^(.*)$ /pages.php?query=$1 [L,NS]

Автор: americanets 12.12.2006, 16:34
да, но тогда у меня ссылки / news/11/22/2006/2/ тоже ссылаются на paes.php
? 

Автор: Wolf1994 12.12.2006, 18:37
Нет, если правило расположить в конце, после других правил.

Автор: americanets 12.12.2006, 21:04
понятно, значит сверху вниз приоритет распространяется? 

Автор: Wolf1994 12.12.2006, 22:38
Да.

Автор: americanets 13.12.2006, 09:43
ок , спасибо, а где можно почитать доку про данный мод? 

Автор: Wolf1994 13.12.2006, 10:03
Вот пара ссылок найденных в Nigma:

http://apachedev.ru/2006/07/31/mod_rewrite-preobrazovanie-dinamicheskih-url-v-staticheskie
http://www.opennet.ru/docs/RUS/mod_rewrite/

Автор: americanets 15.12.2006, 10:40
списибо

Автор: americanets 15.12.2006, 20:17
что то не работает пишу

RewriteEngine on

RewriteRule ^search/$ /search.php
RewriteRule ^(.*) content.php
но при запросе www.site.ru/search/ 
пытается открыть content.php

Автор: Wolf1994 15.12.2006, 20:26
Можно попробовать заэкранировать слэш: \/

Добавлено @ 20:27 
Код

RewriteRule ^search\/$ /search.php


или

Код

RewriteRule ^search(.*)$ /search.php


Автор: americanets 15.12.2006, 20:33
попробую , 

написал

RewriteEngine on

RewriteRule ^poisk/$ search.php [L,NS]

RewriteRule ^(.*)/$ content.php [L,NS]

работает, но если на конце / 

если 

RewriteEngine on

RewriteRule ^poisk/$ search.php [L,NS]

RewriteRule ^(.*)/$ content.php [L,NS]
RewriteRule ^(.*)$ content.php [L,NS]

не работает выходит только на content.php 

Автор: psworld 16.12.2006, 20:47
RewriteRule ^(.*) content.php

Под (.*) попадает предыдущий запрос "/search.php" и переписывается в content.php

По идее нужно грамотно продумать порядок правил или подробнее их описать.

Автор: Rock 16.12.2006, 21:30
проще сделать чтобы все запросы пере направлялись определенному скрипту, например index.php
Код

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$    index.php

а в нем уже реализовывать обработку $_SERVER['REQUEST_URI'];

Автор: americanets 17.12.2006, 12:40
да, не просто всеЮ попробую сделать редирект, 404 ошибка на скрипт который вернет урл с которого перешли + слеш

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)