Добавьте косую черту в правило mod_rewrite - PullRequest
0 голосов
/ 29 декабря 2010

Я очень новичок в mod_rewrite и пытаюсь получить свои собственные правила ... У меня есть простая строка:

RewriteRule  ^concorso/(.*)/$    concorso/?iModule=13&iData=$1   [L]

Он работает с URL-адресами, такими как: http://www.mysite.com/concorso/2/ но не с такими URL-адресами, как http://www.mysite.com/concorso/2 (без косой черты)

Я знаю, что, возможно, это очень распространенная проблема, но все примеры, которые я нахожу в Интернете, "слишком велики" для этого простогоrule

Итак, как я могу автоматически добавить косую черту?Обратите внимание, что правило вроде:

RewriteRule    ^contatti/$    contatti/?iModule=10    [L]

автоматически добавляет косую черту ... И я также попробовал:

RewriteRule  ^concorso/(.*)/?$    concorso/?iModule=13&iData=$1   [L]

(последняя косая черта необязательно), но я получаю ошибки Apache:

[Wed Dec 29 10:02:41 2010] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

127.0.0.1 - - [29/Dec/2010:10:02:41 +0100] "GET /concorso/2/ HTTP/1.1" 500 535

Спасибо за помощь!

1 Ответ

1 голос
/ 29 декабря 2010

Попробуйте ограничить символы, которые шаблон будет принимать, чтобы ваш шаблон не соответствовал тому, что вы переписываете.Например, если вы хотите сопоставлять только URL-адреса /concorso/###, где ### - цифры:

RewriteRule  ^concorso/([0-9]+)/?$    concorso/?iModule=13&iData=$1   [L]

В целом, это будет работать только при сопоставлении URL-адресов без строк запроса:

RewriteRule  ^concorso/([^?]*)/?$    concorso/?iModule=13&iData=$1   [L]
...