URL переписать: исследователь не может найти страницу, но скрипт выполняется? - PullRequest
0 голосов
/ 03 декабря 2011

это мой оригинальный URL, это ссылка для активации, которую я отправлю пользователям по электронной почте для активации их учетных записей

www.m.com/activation.php?active=c663f71e95e242416488e0de7861db8f

Я пытаюсь переписать его, чтобы он был похож на

www.m.com/activation/c663f71e95e242416488e0de7861db8f/

это мой код htaccess:

^activation/([a0-z9]*)/$ activation.php?active=$1

вот мой код активации.php он активирует пользователя, а затем перенаправляет его в свой профиль

<?php

$active_code = isset($_GET['active'])? $_GET['active'] : exit ;
$user = user::find_unactive_user($active_code);
if($user){
$user->active();
header('location:profile.php');
}else echo 'cant find user';

?>

Теперь странная вещь, когда я нажимаю на ссылку активации, перенаправляет меня на страницу с ошибкой 404, так что, очевидно, он не может найти страницу с указанным URL но статус пользователя будет изменен на активный, и это означает, что скрипт был выполнен!

что я делаю не так?

вот моя страница htaccess на всякий случай

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options Indexes
AuthUserFile .htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user 
order deny,allow

ErrorDocument 404 http://www.m.com/404.php

RewriteEngine On

# Rewrite numeric URLs
RewriteRule ^project-([0-9]*)-.*\.html$ project.php?project=$1 [L]
RewriteRule ^project-([0-9]*)\.html$ project.php?project=$1 [L]


RewriteRule ^activation/([a0-z9]*)/$ activation.php?active=$1 [L]

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

Что нужно исправить: во-первых, регулярное выражение недействительно (см. Судхир), и вы забыли QSA, чтобы сохранить вещи, которые были добавлены как GET, и, возможно, флаг NC (= без учета регистра):

RewriteRule ^activation/([a-z0-9]*)/$ activation.php?active=$1 [NC,QSA,L]
0 голосов
/ 03 декабря 2011

Я думаю, что у вас есть ошибка в URL:

^activation/([a0-z9]*)/$ activation.php?active=$1
//should be
^activation/([a-z0-9]*)/$ activation.php?active=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...