2013-10-07 5 views
3

Я пытаюсь написать простое правило mod_rewrite, и я понятия не имею, почему он не работает.Простой пример mod_rewrite

Я просто хочу переписать http://example.com/to/abc на http://example.com/to/index.py?to=abc.

В настоящее время мое правило перезаписи:

RewriteEngine On 
RewriteRule ^/?to/(.*)$ /to/index.py?to=$1 

Который, к моему знанию, должен соответствовать любому URL, похожему на /to/whatever, с или без ведущего /.

Может ли кто-нибудь сказать мне, что мне здесь не хватает?

+0

Возможно, это проблема конфигурации? – muffinista

+0

У меня нет ошибок в журналах. Я просто получаю ошибку 404, говоря, что/to/whatever не существует. – WilHall

+0

Кажется, что правило должно быть прекрасным - я даже проверил его с помощью тестера правил перезаписи, поэтому следующая вероятная вещь, похоже, будет проблемой конфигурации. Существуют ли другие правила? Это в файле .htaccess, и если да, включены ли они? – muffinista

ответ

0

Во-первых, вы не упомянули, каким образом именно он «не работает». Если бы мне пришлось угадывать, я бы сказал, что это, вероятно, зацикливание, и вы должны сделать это вместо:.

RewriteEngine On 
RewriteCond %{REQUEST_URI} !index.py 
RewriteRule ^/?to/(.*)$ /to/index.py?to=$1 [PT] 

Это говорит «не переписать его, если он уже был переписан

код [PT ] там также говорится: «Рассматривайте эту цель как URI, а не как путь к файлу.

Однако, для того, чтобы быть уверенным, вам нужно будет рассказать нам, что происходит, и каким образом оно отличается от того, что вы хотите. Записи журнала ошибок были бы полезны. Переписать записи журнала будет еще более полезно.

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