Проблем с пренаписване на url адреси.

streleca_stz

Registered
Здравейте!

Опитвам се да пренапиша url адрес с .htaccess, но незнайно защо ми дава грешка #500 (Internal Server Error)

Какво се опитвам да променя
От този вид:
site.com/videos?cat=1&page=2
на този:
site.com/videos/cat-1/page-2

Използвам следният код, но изглежда, че не иска да сработи... дали не е от това, че съм премахнал файловото разширение за всички страници?
RewriteRule ^videos/cat-([0-9]+)/page-([0-9]+)/?$ videos?cat=$1&page=$2
RewriteRule ^videos/cat-([0-9]+)/?$ videos?cat=$1
 
Виж ^videos/cat-([0-9]+)/?$

Код:
RewriteRule ^videos/cat-([0-9]+)/page-([0-9]+)/$ videos?cat=$1&page=$2
RewriteRule ^videos/cat-([0-9]+)/$ videos?cat=$1
 
Hous каза:
Виж ^videos/cat-([0-9]+)/?$

Код:
RewriteRule ^videos/cat-([0-9]+)/page-([0-9]+)/$ videos?cat=$1&page=$2
RewriteRule ^videos/cat-([0-9]+)/$ videos?cat=$1
Ммм не, все още си изкарва тази грешка.. :/ А и въпросителният не е ли за наклонената черта? До колкото аз знам се използва, за да може да е валиден този вид site.com/videos/ и този вид site.com/videos (без наклонена черта)
 
streleca_stz каза:
RewriteRule ^videos/cat-([0-9]+)/page-([0-9]+)/?$ videos?cat=$1&page=$2
RewriteRule ^videos/cat-([0-9]+)/?$ videos?cat=$1

Така написано ти се опитваш да направиш точно обратното.
от
Код:
site.com/videos/cat-1/page-2
да го обърнеш на
Код:
site.com/videos?cat=1&page=2

Пробвай това:
Код:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

#/videos?cat=1&page=2 => /videos/cat-1/page-2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(videos)\?cat=([^&]+)&page=([^&]+) [NC]
RewriteRule ^ /%1/cat-%2/page-%3? [R=302,L,NE]

RewriteCond %{QUERY_STRING} !^.+$ [NC]
RewriteRule ^videos/cat-([0-9]+)/?$ /videos?cat=$1 [L,QSA,NC]
 
Ами моето правило е така, и работи:
Код:
RewriteRule ^cat/(.*)/page-(.*)/$ bla.php?category=$1&page=$2
RewriteRule ^cat/(.*)/$ bla.php?category=$1

а като добавя ? след наклонената черта се прецаква rewrite-а
 
vinsbg каза:
streleca_stz каза:
RewriteRule ^videos/cat-([0-9]+)/page-([0-9]+)/?$ videos?cat=$1&page=$2
RewriteRule ^videos/cat-([0-9]+)/?$ videos?cat=$1

Така написано ти се опитваш да направиш точно обратното.
от
Код:
site.com/videos/cat-1/page-2
да го обърнеш на
Код:
site.com/videos?cat=1&page=2

Пробвай това:
Код:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

#/videos?cat=1&page=2 => /videos/cat-1/page-2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(videos)\?cat=([^&]+)&page=([^&]+) [NC]
RewriteRule ^ /%1/cat-%2/page-%3? [R=302,L,NE]

RewriteCond %{QUERY_STRING} !^.+$ [NC]
RewriteRule ^videos/cat-([0-9]+)/?$ /videos?cat=$1 [L,QSA,NC]
Хмм, дава ми "Object not found!" :?

Hous каза:
Ами моето правило е така, и работи:
Код:
RewriteRule ^cat/(.*)/page-(.*)/$ bla.php?category=$1&page=$2
RewriteRule ^cat/(.*)/$ bla.php?category=$1

а като добавя ? след наклонената черта се прецаква rewrite-а
При мен дори и с твоя пример не сработва О,О

Fakeheal каза:
Коя наклонена черта? :)
Тази в края на адреса.. Очевидно сървъра (май е той? :D) се бърка при изписването на
site.com/home/ и site.com/home (без наклонената черта)
 
Какво друго имаш в .htaccess-a ... всички урл-та ли искаш да се пренаписват или това само?
 
vinsbg каза:
Какво друго имаш в .htaccess-a ... всички урл-та ли искаш да се пренаписват или това само?
Какво има във файла:
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]


RewriteRule ^user-([^/]+)/?$ user?u=$1 [L]
RewriteRule ^delete-([0-9]+)/?$ delete?id=$1 [L]
RewriteRule ^deleteAnswer-([0-9]+)/?$ deleteAnswer?id=$1 [L]

RewriteRule ^vids-([^/]+)/?$ uploads?view=videos&user=$1 [L]
RewriteRule ^photos-([^/]+)/?$ uploads?view=photos&user=$1 [L]
RewriteRule ^songs-([^/]+)/?$ uploads?view=songs&user=$1 [L]

RewriteRule ^settings-avatar/?$ settings?s=avatar [L]
RewriteRule ^settings-password/?$ settings?s=password [L]

RewriteRule ^addvideo/?$ add?p=video [L]
RewriteRule ^addphoto/?$ add?p=photo [L]
RewriteRule ^addsong/?$ add?p=song [L]

RewriteRule ^games-cat-([0-9]+)/?$ cats?p=games&id=$1 [L]
RewriteRule ^music-cat-([0-9]+)/?$ cats?p=music&id=$1 [L]
RewriteRule ^photos-cat-([0-9]+)/?$ cats?p=photos&id=$1 [L]
RewriteRule ^movies-cat-([0-9]+)/?$ cats?p=movies&id=$1 [L]

RewriteRule ^video-([0-9]+)/?$ video?p=view&id=$1 [L]
RewriteRule ^video-comm-([0-9]+)/?$ video?p=delete&id=$1 [L]
RewriteRule ^videos-page-([0-9]+)/?$ videos?p=$1 [L]
RewriteRule ^video-search/?$ video?p=search [L]
RewriteRule ^editVideo-([0-9]+)/?$ video?p=edit&id=$1 [L]


RewriteRule ^videos/cat-(.*)/page-(.*)/$ videos?cat=$1&page=$2
RewriteRule ^videos/cat-(.*)/$ videos?cat=$1


RewriteCond %{THE_REQUEST} ^(.*).php [NC]
RewriteRule ^(.*)$ http://77.236.***.***/folder/404 [R=301,L]
От сега казвам, че не съм специалист в .htaccess стила на писане, но щом работи (е, поне част, хаха :D)
По принцип точно този тип на пренаписване на адреса ще ми трябва и за още няколко случая, но аз ако успея първо това да подкарам ще мога и другите...
 
Код:
# /videos?cat=1&page=2 => /videos/cat-1/page-2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(videos)\?cat=([^&]+)&page=([^\s]+) [NC]
RewriteRule ^ /%1/cat-%2/page-%3? [R=302,L,NE]

RewriteCond %{QUERY_STRING} !^.+$ [NC]
RewriteRule ^videos/cat-([0-9]+)/?$ /videos?cat=$1 [L,QSA,NC]

Това при мен вече работи. Заредих директно /videos?cat=1&page=2 в урл-то и ми го обърна на /videos/cat-1/page-2
 
vinsbg каза:
Код:
# /videos?cat=1&page=2 => /videos/cat-1/page-2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(videos)\?cat=([^&]+)&page=([^\s]+) [NC]
RewriteRule ^ /%1/cat-%2/page-%3? [R=302,L,NE]

RewriteCond %{QUERY_STRING} !^.+$ [NC]
RewriteRule ^videos/cat-([0-9]+)/?$ /videos?cat=$1 [L,QSA,NC]

Това при мен вече работи. Заредих директно /videos?cat=1&page=2 в урл-то и ми го обърна на /videos/cat-1/page-2
А ме не ме пренасочи, а си седи същата работа. Както и ако се опитам да отворя "/videos/cat-1/page-2" показва пак същата работа.. По принцип не мисля, че има особена разлика, но възможно ли е да показва грешката, защото пробвам на домашен хост? :?
 
Ами.. успях да го нагодя някак си.. Не е 1:1 с това, което исках, но пак е нещо. Обаче сега забелязах друг проблем...
При отваряне на site.com/videos си зарежа нормално, но ако напиша site.com/videos/ ми дава "Internal Server Error".. :shock: А преди не беше така.. и вече започвам направо да се вбесявам.. Ето го целият .htaccess файл и просто не мога да си го обясня защо се получава така... добавил съм и /? накрая, за да се отваря еднакво и с наклонената черта, и без нея.... :/
Код:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)/?$ $1.php [L,QSA]

RewriteCond %{THE_REQUEST}  ^(.*).php [NC]
RewriteRule ^(.*)/?$  http://77.236.***.***/folder/404 [R=301,L]

RewriteRule ^user-([^/]+)/?$ user?u=$1 [L]
	RewriteRule ^delete-([0-9]+)/?$ delete?id=$1 [L]
	RewriteRule ^deleteAnswer-([0-9]+)/?$ deleteAnswer?id=$1 [L]
	
	RewriteRule ^vids-([^/]+)/?$ uploads?view=videos&user=$1 [L]
	RewriteRule ^photos-([^/]+)/?$ uploads?view=photos&user=$1 [L]
	RewriteRule ^songs-([^/]+)/?$ uploads?view=songs&user=$1 [L]

	RewriteRule ^settings-avatar/?$ settings?s=avatar [L]
	RewriteRule ^settings-password/?$ settings?s=password [L]

	RewriteRule ^addphoto/?$ add?p=photo [L]
	RewriteRule ^addsong/?$ add?p=song [L]
	
	RewriteRule ^games-cat-([0-9]+)/?$ cats?p=games&id=$1 [L]
	RewriteRule ^music-cat-([0-9]+)/?$ cats?p=music&id=$1 [L]
	RewriteRule ^photos-cat-([0-9]+)/?$ cats?p=photos&id=$1 [L]
	RewriteRule ^movies-cat-([0-9]+)/?$ cats?p=movies&id=$1 [L]

	RewriteRule ^video-([0-9]+)/?$ video?p=view&id=$1 [L]
		RewriteRule ^video-comm-([0-9]+)/?$ video?p=delete&id=$1 [L]
		RewriteRule ^editVideo-([0-9]+)/?$ video?p=edit&id=$1 [L]
		RewriteRule ^addvideo/?$ video?p=add [L]
	RewriteRule ^videos-page-([0-9]+)/?$ videos?p=$1 [L]
	RewriteRule ^videos-search/?$ videos?p=search [L]
 

Back
Горе