.htaccess mod_rewrite добавить "/" в конец URL - PullRequest
0 голосов
/ 11 мая 2011

Это мой код .htaccess:

RewriteBase /kajak/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^moduli/([^/]+)/(.*)$ moduli/$1/index.php/$2 [L]

Теперь / добавляется к каждому URL.Например, http://127.0.0.1/moduli/novice становится http://127.0.0.1/moduli/novice/.

Как я могу предотвратить получение / в конце?

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Не думаю, что это связано с вашим правилом перезаписи (оно не соответствует).

Добавляется /, потому что когда вы запрашиваете http://example.com/xx/zz и веб-сервер обнаруживает, что zz является каталогом, он преобразует его в http://example.com/xx/zz/ с помощью перенаправления 301 (браузер делает другой запрос - проверьте ваши журналы apache).

Подробнее о перенаправлении косой черты вещь здесь .

Вы должны спросить себя, что вы хотите, чтобы происходило, когда запрашиваемый URL-адрес равен http://127.0.0.1/moduli/novice/ (Хотите, чтобы он был перехвачен вашим перенаправлением или нет? В настоящее время он не перехватывается из-за RewriteCond %{REQUEST_FILENAME} !-d)

Кстати, я не совсем понимаю вашу линию RewriteBase /kajak/ - вы уверены, что это правильно?

1 голос
/ 11 мая 2011

Хотя я не знаю ответа на ваш вопрос, я отмечу две странности относительно вашего вопроса и вашего кода, которые могут быть связаны с рассматриваемой проблемой.

  1. С помощью RewriteBaseв вашем коде эти правила даже не должны срабатывать.

  2. Пока я новичок в регулярном выражении, я смотрю на ([^ /] +) и немного растерялсяотносительно того, почему вы захватываете это.Я знаю, что ^ соответствует START строки, что никогда не будет правдой, так как у вас уже есть другой в реальном начале строки.

При этом, я, вероятно, напишукод как показано ниже:

RewriteBase /moduli/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ $1/index.php/$2 [L]

Это переписало бы URL, как показано ниже:

http://www.website.com/moduli/novice/view
http://www.website.com/moduli/novice/index.php/view

Судя по вашему блоку кода, похоже, вы пытаетесь это сделать.Если это не так, то извините.

...