Мод переписан: перенаправление на косую черту

0

У меня есть файл.htaccess, в котором я пытаюсь перенаправить запросы на

/something/

в

/something

... после чего должно выполняться второе правило, которое поворачивается

/something

...в

/index.php?foo=something

Здесь мой.htaccess:

RewriteEngine on

#rule 1 - disallow trailing slash
RewriteRule ^([a-z\-]+)\/$ $1

#rule 2 - main redirect
RewriteCond %{REQUEST_URI} !(inc/) [NC]
RewriteRule ^[a-z\-]+$ index.php?foo=$0

Оба правила вступают в силу правильно, но перенаправление в первом правиле переходит к 404, и я не понимаю, почему. Правильный поток должен быть:

Любая идея, что я делаю неправильно?

  • 0
    Да, это правильно.
Теги:
.htaccess
redirect
mod-rewrite

1 ответ

0

Вам нужен флаг R для перенаправления:

DirectorySlash Off
RewriteEngine on

#rule 1 - disallow trailing slash
RewriteRule ^([a-z\-]+)\/$ $1 [L,R]

#rule 2 - main redirect
RewriteCond %{REQUEST_URI} !(inc/) [NC]
RewriteRule ^[a-z\-]+$ index.php?foo=$0

Кроме того, вам может потребоваться отключить DirectorySlash, потому что mod_dir автоматически добавит конечные косые черты в директивы. Если вы не отключите это, это может вызвать цикл перенаправления.

Кроме того, вам может также понадобиться директива RewriteBase если эти правила находятся в файле htaccess, который не находится в вашем корневом каталоге документа.

RewriteBase /

для корневого документа, но в вашем вопросе у вас есть URL-адреса, которые выглядят как http://localhost/mysite/something/ и если правила находятся в /mysite/ вам нужно:

RewriteBase /mysite/
  • 0
    Хорошо, теперь это делает что-то ДЕЙСТВИТЕЛЬНО странное: если я перехожу на страницу с косой чертой, она (заметно) перенаправляет меня на мой локальный компьютер с испорченным URL-адресом, таким как http://localhost/c:/xampp...
  • 0
    @ Utkanos вы создали базу для перезаписи?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню