#.htaccess #mod-rewrite
#.htaccess #переписать мод
Вопрос:
Это мой код .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/
.
Как я могу предотвратить получение /
в конце?
Комментарии:
1. Либо, пожалуйста, объясните, что вы хотели бы сделать более продуманным способом (возможно, расширяя, почему ваша база перезаписи / kajak / и все же / kajak / отсутствует в ваших примерах URL-адресов), либо выберите ответ ниже в качестве ответа на ваш вопрос.
Ответ №1:
Хотя я не знаю ответа на ваш вопрос, я отмечу две странности в вашем вопросе и вашем коде, которые могут быть связаны с рассматриваемой проблемой.
-
С базой перезаписи, которая есть в вашем коде, эти правила даже не должны запускаться.
-
Хотя я сам новичок в регулярных выражениях, я смотрю на ([^ /] ) и немного смущен тем, почему вы это записываете. Я знаю, что ^ соответствует НАЧАЛУ строки, что никогда не было бы правдой, поскольку у вас уже есть другой в реальном начале строки.
При этом я бы, вероятно, написал код следующим образом:
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
Судя по вашему блоку кода, это, похоже, то, что вы пытаетесь сделать. Если это не так, то я сожалею.
Комментарии:
1. спасибо за ваш ответ. Ваш код лучше и работает нормально, но у вас та же проблема. Все еще добавляйте «/» в конец URL-адреса.
2. Добро пожаловать. Если мой ответ был ответом на ваш вопрос, пожалуйста, отметьте is как таковой.
Ответ №2:
Я не думаю, что это связано с вашим правилом перезаписи (оно ему не соответствует).
/ добавляется потому, что, когда вы запрашиваете, http://example.com/xx/zz
и веб-сервер обнаруживает, zz
что это каталог, он преобразует его в http://example.com/xx/zz/
через перенаправление 301 (браузер выполняет другой запрос — проверьте журналы apache).
Прочитайте о переадресации с косой чертой в конце здесь.
The, вы должны спросить себя, что вы хотите, чтобы происходило, когда запрашиваемый URL http://127.0.0.1/moduli/novice/
(Вы хотите, чтобы он был перехвачен вашим перенаправлением или нет? В настоящее время это не отслеживается из-за RewriteCond %{REQUEST_FILENAME} !-d
)
Кстати, я не совсем понимаю вашу RewriteBase /kajak/
строку там — вы уверены, что это правильно?
Комментарии:
1. это правильно, потому что папка kajak. Но я редактирую код так, как предлагает cbroughton. Да, я хочу, чтобы меня кэшировали перенаправлением