2009-07-27 2 views
0

Я пытаюсь написать это переписывание коду, и он просто не работает (Apache 2.2):Modrewrite и PHP вопросы

RewriteEngine on 
RewriteBase/

RewriteRule ^account/activate\?token=(.*) index.php?route=account/activate&token=$1 

Я пробовал много различных вариаций. Пробовав около часа и поиская Google, я в тупике. Здесь вы заходите!

+1

Возможно, вы немного объясните, что вы пытаетесь сделать? Может быть, несколько примеров входящих URI и исходящих и какие параметры вы хотите сохранить? – AlexanderJohannesen

+0

Что не работает? В чем проблема и чего вы пытаетесь достичь? – random

+0

Работает ли mod_rewrite по другим правилам? –

ответ

3

Попробуйте

RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^account/activate$ index.php?route=account/activate&%1 

В основном это отображает всю строку запроса% 1 в RewriteRule, и затем вы можете получить доступ к своему токену из своего php-скрипта, используя старый добрый $ _GET ['token']

+0

Это сработало спасибо! – mikelbring

0

Я использовал это:

RewriteEngine On 

RewriteRule ^account/activate/?$ index.php?route=account/activate&%{QUERY_STRING} 
RewriteRule ^account/activate/?/$ index.php?route=account/activate&%{QUERY_STRING} 

И это работает с этим:

<?php 

echo "route is: " . $_GET['route']; 
echo "</br>"; 
echo "token is " . $_GET['token']; 

Мой каталог, где мой код находится в называется тест. Это мои URLs:

http://localhost:80/test/account/activate/?token=test
http://localhost:80/test/account/activate/?token=asd

+0

Я вставил то, что у вас было, и это не сработало. – mikelbring

+0

Хорошо, ты попробовал заменить, ты весь .htaccess с моим сниппитом. Если это не работает, я думаю, что это ошибка конфигурации. Возможно, вы могли бы опубликовать весь htaccess. – MrHus

+0

Он идеально подходит для вас. Появляется страница и работает маршрутизатор var, но токен пуст. – mikelbring

0

Вы не можете соответствовать параметрам часть вашего URL с mod_rewrite.

Единственный способ проверить для параметра в URL, чтобы использовать RewriteCond директиву и тестирование окр переменной QUERY_STRING

2

Образец RewriteRule directive проверяется только на пути URI. Строка запроса может быть проверена только с RewriteCond directive:

RewriteCond %{QUERY_STRING} ^token=(.*) 
RewriteRule ^account/activate$ index.php?route=account/activate&token=%1 

Но есть более простое решение: Просто установите QSA flag, чтобы получить строку запроса автоматически добавляется в новую строку запроса:

RewriteRule ^account/activate$ index.php?route=account/activate [QSA] 

Примечание: Вам просто нужно установить флаг QSA, если есть запрос, определенный в подстановке. Если нет, исходный запрос уже будет добавлен автоматически.