Mod-rewrite въпрос

rivo

Registered
Добър вечер,
имам малък проблем със mod_rewrite, проблема е там, че когато използвам тези два реда долният винаги не бачка, а този който поставя отгоре работи.

Имам една страница с категории и в нея имам itemi, обаче имам и странициране. Резултата който искам да получа е този:
page/CategoryName/ItemName

а когато има странициране да стане така:
page/CategoryName/2 (втора страница например)

RewriteRule page/(.*)/(.*) page.php?cat=$1&item=$2

RewriteRule page/(.*)/(.*) page.php?cat=$1&page=$2

или
page/CategoryName/page/2

RewriteRule page/(.*)/page/(.*) page.php?cat=$1&page=$3

обаче не става, пак си пречат.
Пробвах и така, ама пак без успех

RewriteRule page/(.*)/(.*) page.php?cat=$1&item=$2

RewriteRule page/(.*)/(.*) page.php?cat=$1&page=$4
и
RewriteRule page/(.*)/(.*) page.php?cat=$3&page=$4
[/b]
 
защото са еднакви ...

виж .. ти имаш "RewriteRule page/(.*)/(.*) page.php?cat=$1&item=$2 " , нека да го разгледаме. .

при всички файлове промяната е след втората наклонена ..
RewriteRule page/(.*)/(.*) page.php?cat=$1&item=$2

ето ти примерния урл ...
http://web-tourist.net/uroci/php
браузъра си ипалнява всичко до uroci .. и спира.. защото при следващата наклонена има повече от 1 възможност .. и за да се избегне .. това при рефреш да ти прави 1 а при следващ друго ... браузара взима само първото ..

моя савет ... смени работите преди последната наклонена .. или ги филтрирай малко .. с легулярни изрази .. :) :?:

ако очакваш да ти е само число използвай [0-9] , ако ще е само стринг без числа [a-zA-z_-] или пък и двете ... избягвай да слагаш (.*) .. защото потребителя може да сложи всичко което си хареса накрая .. :D
:?:
 
Еми направи го така:

PHP:
RewriteRule item/([^/]+)/([^/]+) page.php?cat=$1&item=$2 [L]
RewriteRule page/([^/]+)/([^/]+) page.php?cat=$1&page=$2 [L]
 
rivo каза:
Добър вечер,
имам малък проблем със mod_rewrite, проблема е там, че когато използвам тези два реда долният винаги не бачка, а този който поставя отгоре работи.

Имам една страница с категории и в нея имам itemi, обаче имам и странициране. Резултата който искам да получа е този:
page/CategoryName/ItemName

а когато има странициране да стане така:
page/CategoryName/2 (втора страница например)

RewriteRule page/(.*)/(.*) page.php?cat=$1&item=$2

RewriteRule page/(.*)/(.*) page.php?cat=$1&page=$2

или
page/CategoryName/page/2

RewriteRule page/(.*)/page/(.*) page.php?cat=$1&page=$3

обаче не става, пак си пречат.
Пробвах и така, ама пак без успех

RewriteRule page/(.*)/(.*) page.php?cat=$1&item=$2

RewriteRule page/(.*)/(.*) page.php?cat=$1&page=$4
и
RewriteRule page/(.*)/(.*) page.php?cat=$3&page=$4
[/b]

това, което си написал трудно може да стане като цяло, трябва чрез php да правиш проверки за да успееш да ползваш един и същ мод, аз ти предлагам друго

Код:
RewriteRule page/([^\/.*]+)/([^\/.*]+)?$ page.php?cat=$1&item=$2 [L]

това ще излгежда така page/category/item
Код:
RewriteRule page/([^\/.*]+)/([^\/.*]+)/page/([^\/.*]+)?$ page.php?cat=$1&item=$2&page=$3 [L]

това ще излгежда така page/category/item/page/3 примерно

условието със звездичката не е подходящо, защото взима всичко, и в твоя случай се опитваш да вземеш всичко при първиата променлива и при втората
 
M1tq96 - да сега ще прегледам за регулярните изрази, но просто не съм много запознат с mod_rewrite

embaka - сигурно нещо не ме разбра както трябва, не искам да получа

page/Category/Item/2

защото те самите itemi се листват

възможни са само

page/Category/ - категории
page/Category/2 -страницирани itemi от категория
page/Category/Item - избран елемент от тях

relax4o - нещо не мога да хвана идеята, ама ще пробвам

Мисля, че се сетих как ще стане, по примера на embaka, само че малко по-различно.

ще ми трябва само малко помощ със съставянето на правилото, тоест да стане така че,

page/category/ и тука ще е регулярен израз, който само пуска числа, което ще води към страницата със страницирането, а второто правило

page/category/ и тук проверката за числа и букви, защото имам някой записи, които съдържат и години, и ако има букви да отваря itema

Не знам дали ще стане така.
 
Какво не разбра.... ще стане така...


http://somesite.com/item/category/itemID (id предполагам)

както и

http://somesite.com/page/category/pageN


така или иначе едното ще ти изкарва "предмета" за самата категория, а другото ще ти служи за странициране на категория.
 

Back
Горе