Rewrite Линкове

bytheway

Registered
Здравейте.
От няколко часа ме мъчи един проблем с Rewrite и нещата вървят на по-зле :)

Структурата на папките ми е следната:

4420.png


Успешно премахнах .php чрез Rewrite и страниците ми зареждат така.

www.stranica.com/coding/css
www.stranica.com/coding/html

Сега обаче искам да добавя други параметри в адреса, за да изглежда

www.stranica.com/coding/css/parametyr
www.stranica.com/coding/html/parametyr

Разгледах всякакви теми във форума, търсих нагоре надолу, но без успех (за сега). Честно казано тепърва навлизам в цялата работа с Rewrite мода, но съм оптимист, че може да стане :)

Пробвах нещо от сорта на това, но ми показва грешка 500.

RewriteRule ^css/(.*)$ coding/css.php?test=$1 [L]

Ще ви бъда много благодарен, ако ми подскажете малко :P как да стане.
И по-добре (и по-лесно) ли би било, ако проненя структурата.
 
big_boy каза:
Код:
RewriteEngine On
RewriteRule ^css/([^/]*)$ /coding/css.php?test=$1 [L]
Би трябвало да работи така :)


За съжаление ми показва 404 грешка. Няма такава страница.
Явно apache търси да намери файл с такова име, а не прилага test стойноста като параметър :? Поне аз така си го обяснявам
 
bytheway каза:
big_boy каза:
Код:
RewriteEngine On
RewriteRule ^css/([^/]*)$ /coding/css.php?test=$1 [L]
Би трябвало да работи така :)


За съжаление ми показва 404 грешка. Няма такава страница.
Явно apache търси да намери файл с такова име, а не прилага test стойноста като параметър :? Поне аз така си го обяснявам
Код:
RewriteEngine On
RewriteRule ^coding/css/([^/]*)$ $1.php [L]
RewriteRule ^coding/html/([^/]*)$ $1.php [L]
Нещо такова?
 
(doh) Съжалявам за късния отговор.

Styl3rbg, все още показва грешка :S:S
нещо не върви работата.
Дали няма да е по-добре, ако променя структурата на папкта ?
 
Код:
RewriteEngine On
RewriteRule ^css(/?)([^/]*)$ /coding/css/index.php?test=$1 [L]
RewriteRule ^html(/?)([^/]*)$ /coding/html/index.php?test=$1 [L]

Ще работи при следните адреси:

http://coding/css
http://coding/css/
http://coding/css/parameter
 
Защо слагате край ($) ? Махнете края и условието го направете да приема всичко, а не всичко, което не е наклонена черта.
 
exec каза:
Код:
RewriteEngine On
RewriteRule ^css(/?)([^/]*)$ /coding/css/index.php?test=$1 [L]
RewriteRule ^html(/?)([^/]*)$ /coding/html/index.php?test=$1 [L]

Ще работи при следните адреси:

http://coding/css
http://coding/css/
http://coding/css/parameter

За съжаление не работи. Пробвах да направя нов проект, без излишни неща, за да пробвам кода, но без успех. Наблюденията ми са следните:

Когато адреса е
http://localhost/testproject/coding/css/asd

не работи, а ми показва

The requested URL /testproject/coding/css/asd was not found on this server.

Когато обаче го направя така:
http://localhost/testproject/coding/css/?test=asdad

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

Благодаря все пак за предложението
 
PHP:
RewriteRule ^css/([^/]+)/? coding/css.php?test=$1 [L]
RewriteRule ^html/([^/]+)/? coding/html.php?test=$1 [L]


Дерзай.


А като ти гледам папките май така трябва да стане

PHP:
RewriteRule ^css/([^/]+)/? coding/css/index.php?test=$1 [L]
RewriteRule ^html/([^/]+)/? coding/html/index.php?test=$1 [L]

За да не зависи преди това какво има трябва така да стане.

PHP:
RewriteRule css/([^/]+)/? coding/css.php?test=$1 [L]
RewriteRule html/([^/]+)/? coding/html.php?test=$1 [L]
 
(bow) Благодаря на всички. След много мъки нещата тръгнаха. И аз намерих един код, който (след малка промяна) също ми свърши работа.

Искам да споделя впечатленията си, като се надявам това да подобри знанията и опита ви :)

Когато използвах това:
PHP:
RewriteRule ^css/([^/]+)/? coding/css/index.php?test=$1 [L]

при отваряне на страница
http://localhost/coding/css/teststring

ми показа грешка:
The requested URL /coding/css/teststring was not found on this server.

Когато го промених на

PHP:
RewriteRule css/([^/]+)/? coding/css/index.php?test=$1 [L]

работите тръгнаха, обаче това довежда до един минус.
Това, което е в адреса преди css/ не се взема под внимание.
Така например адрес

http://localhost/zemqta/e/krygla/css/teststring

изкарва същия резултат както и
http://localhost/coding/css/teststring

което не е много ефективно в някои случаи.

За да бъда сигурен, че преди css има coding/
трябваше да променя кода на:

PHP:
RewriteRule [color=orange]^coding/[/color]css/([^/]+)/? coding/css/index.php?test=$1 [L]

За да използвам друг файл в същата категория (/coding/css/), а не index.php, просто смених index.php с името на новия файл.

PHP:
RewriteRule ^coding/css/([^/]+)/? coding/css/[color=orange]page.php[/color]?test=$1 [L]

Също така, кода:
PHP:
RewriteRule ^coding/css/([^/]+)[color=orange]$[/color] coding/css/index.php?test=$1 [L]

работи по същия начин като другия. Не прави никакви проблеми.

И накрая още един вариант, който намерих в интернет, и който също работи без проблеми:

PHP:
RewriteRule ^coding/css/[color=orange]([a-zA-Z0-9_-]+)$[/color] coding/css/index.php?test=$1

Много тестове бяха. Благодаря на всички за времето и предложенията :)
 

Back
Горе