.htaccess и презаписване на едно урл

vinsbg

Registered
Здравейте,

получава ми се малък проблем с едно урл и не знам как точно би станало. Имам линк към вход:
Код:
http://saita.com/login/
където
Код:
RewriteRule ^login/$ /userAction.php [L]
При регистрация искам да връща потребителя на /login/ страницата и там имам следния редирект:
Код:
userAction.php?action=joined
и го презаписвам така:
Код:
RewriteRule ^login-joined/$ /userAction.php?action=joined [L]

Обаче при редиректа ме праща на 404, че не е намерена страницата. От какво може да е и как мога да го оправя?
 
Само гадая, обаче това

Код:
RewriteRule ^login-joined/$ /userAction.php?action=joined [L]

не трябва ли да е така

Код:
RewriteRule ^login/$ /userAction.php?action=joined [L]
 
Пробвах го и така преди да пиша ( трябваше да го спомена ), но отново не е намерена страница..
?action=joined принципно е за да върне съобщение
Код:
if(isset($_GET['action']) && $_GET['action'] == 'joined'){
	echo "<code>Успешно се регистрирахте. Моля, проверете имейла си за активационен линк, за да завършите регистрацията.</code>";
}
Но дори и да го махна да е само userAction.php отново ме праща на 404..

едит:

и да добавя, че навсякъде в сайта съм ги преправил урл-тата и си работят.. само и единствено това не мога да го накарам.
 
Всъщност сега като се замисля на тебе ти трябва редирект. Пробвай с хедър да го направиш това. Не съм много в час с .htaccess командите, но мисля че редирект не се прави с RewriteRule, а с RedirectMatch 301. Демек в твоя случай е по лесно да го направиш с хедър в пхп.
 
Не обяснявам хубаво явно :)

Аз ползвам редирект. Това ми е
Код:
//...
mail($to, $subject, $body, $additionalheaders);

			//redirect to index page
			header('Location: userAction.php?action=joined');
			exit;
 
vinsbg каза:
Не обяснявам хубаво явно :)

Аз ползвам редирект. Това ми е
Код:
//...
mail($to, $subject, $body, $additionalheaders);

			//redirect to index page
			header('Location: userAction.php?action=joined');
			exit;

Може би тука се корени грешката. Пробвай нещо от типа:

header('Location: login?action=joined');

един вид логин ти го презаписваш на userAction.php с RewriteRule
 
Код:
header('Location:  login?action=joined');
и това
Код:
RewriteRule ^login/$ /userAction.php?action=joined [L]
пак същия резултат.

И аз съм почти сигурен, че е при ?action=joined проблема, но не знам кое точно.
 
Направих набързо една проба и ето какво се получава при мен.
Имам само един файл userActive.php и един htaccess. в папка proba
В htaccess-а имам
Код:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^login$ userAction.php/$1 [L]

В моя случай при въведен адрес http://localhost/proba/login ми зарежда userAction.php

Забележи че наклонените черти имат значение. Ако напиша http://localhost/proba/login/ ми дава грешка.

В файла съм направил една форма с едно поле. Ако въведа думата login редиректвам и фактически пак оставам в userAction.php но в адрес бара имам http://localhost/proba/login?action=joined

Код:
<form method="post">
                <input type="text" name="login" />
                <input type="submit" name="submit" /> 
            </form>

            <?php
            if (isset($_POST['submit'])) {
                if ($_POST['login'] == 'login') {
                    header('Location: http://localhost/proba/login?action=joined');
                } else {
                    echo '404';
                }
            }
            ?>

Извода е че може да бъркаш някъде с наклонените черти. Разгледай моя пример и виж къде при теб е разликата.
 
Т.е. само с един rewrite го правиш и за двете?
Код:
RewriteRule ^login$ userAction.php/$1 [L]

При мен не работи и не ми е ясно защо... дава си 404...
Код:
header('Location: login?action=joined');
пробвах да добавя и / след логин ... същата работа.

УРЛ-то, когато съм на userAction.php e: site.com/login/..
 
Ако искаш с наклонена черта htaccess става така
RewriteRule ^login/$ userAction.php/$1 [L]
а хедъра така
header('Location: http://localhost/proba/login/?action=joined');
и пак си работи но адреса става малко странен и да само от едно RewriteRule има нужда.
 
Махнах всякакви страници за къстъм ерори ( да ме питаш, защо не съм го направил по-рано ) и ето какво излезе на хрома.. проблема значи е на друго място..
Код:
This webpage has a redirect loop

ERR_TOO_MANY_REDIRECTS
Каквато и страница да сложа за редирект все това излиза..

да уточня, че това с This webpage has a redirect loop става само когато се опитам да презапиша урл-тата... иначе си работи нормално.
 
Явно нещо въпроса ( ? ) или друго му бърка работата, защото примерно това си работи без проблем
Код:
RewriteRule ^login-joined$ /userAction.php?action=joined [L]
+
Код:
header('Location:  login-joined');
exit;
 
След като веднъж се отвори обаче после вече дава пак грешка.

Примерно влиза някой и се регистрира. Юе му зареди страницата - login-joined без проблеми. След него влиза някой и се регистрира - не зарежда login-joined, а зарежда 404...

Някакъв кеш ли е какво е? :shock:
 
vinsbg каза:
След като веднъж се отвори обаче после вече дава пак грешка.

Примерно влиза някой и се регистрира. Юе му зареди страницата - login-joined без проблеми. След него влиза някой и се регистрира - не зарежда login-joined, а зарежда 404...

Някакъв кеш ли е какво е? :shock:
Което си дал по-горе в правилно. Какво значи
След него влиза някой и се регистрира - не зарежда login-joined, а зарежда 404...
?
htaccess-a хич не го грее кой се е регнал/логнал и кой не. Единствената му работа е да превърне /login-joined в /userAction.php?login=joined, независимо от това дали се е регнал вече някой или не.
 

Back
Горе