2009-05-20 2 views
1

Я просто изучаю файлы mod_rewrite и regex, и то, что я пытаюсь сделать, это передать переменные любого имени с любым количеством переменных и значений в сценарий и перенаправить их в другой скрипт.Может ли mod_rewrite сохранить двойную косую черту?

вот что я до сих пор:

RewriteEngine on 
RewriteRule ^script\$(.*[\])? anotherscript?ip=%{REMOTE_ADDR}&$1 [L] 

, что все, кажется, работает за исключением того, что один из параметров я передаю это URL и // после HTTP: // всегда получает урезанную к одной косе.

, например, я

скрипт $ URL = http://www.stackoverflow.com

затем перенаправляет:

anotherscript IP = 127.0.0.1 & URL = HTTP: /www.stackoverflow.com

и второй скрипт зажимает однократное нажатие.

Я понимаю, что сохранение двойного слэш - это полная противоположность тому, что люди обычно делают с mod_rewrite. Есть ли способ сохранить двойную косую черту?

EDIT: Решение найдено с помощью Gumbo.

RewriteCond %{THE_REQUEST} ^GET\ (.*)/script\$([^\s]+) 
RewriteRule ^script\$(.*) anotherscript?ip=%{REMOTE_ADDR}&%2 [L] 

Я должен добавить, что (. *) Перед/скрипт на RewriteCond после того, как я сделал, что она избавилась от ошибок 404, а затем это был просто вопрос прохождения через матчи.

ответ

2

Попробуйте это правило:

RewriteCond %{THE_REQUEST} ^GET\ /script\$([^\s]+) 
RewriteRule ^script\$.+ anotherscript?ip=%{REMOTE_ADDR}&%1 [L] 

См Diggbar modrewrite- How do they pass URLs through modrewrite? для объяснения.

+0

это вызывает 404 не нашел – nerdabilly

+0

Надеюсь, вы не забыли обязательный 'RewriteEngine on'. – Gumbo

+0

нет, это есть. – nerdabilly

1

Я думаю, что может быть что-то не так с первой частью вашего RewriteRule регулярного выражения

^script\$(.*[\])? 

обратной косой (\) используются, чтобы избежать специального символа в litteral один, таким образом, вы на самом деле пытаетесь соответствовать закрывающий кронштейн (]), это предназначено?

попробовать этот

RewriteRule ^script\$(.*)? anotherscript?ip=%{REMOTE_ADDR}&$1 [L] 
+0

хороший улов, я удалил эту часть, и она все еще работала, но двойная слэш все еще преобразуется в однократную. – nerdabilly

Смежные вопросы