RewriteRule не соответствует ожидаемому (мной) - PullRequest
0 голосов
/ 04 апреля 2011

Я не могу понять, почему это не работает.Может быть, кто-нибудь может мне это объяснить.

У меня есть следующее:

http://www.mydomain.de/my-apache-tag.html 

, которое следует переписать в

http://www.mydomain.de/tag/my-apache

В моем .htaccess я включил это правило:

RewriteRule ^/(.*)-tag\.html$ /tag/$1

В моем понимании все, что находится между / и перед -tag.html, должно быть принято в качестве аргумента 1.

Но приведенное выше приведет к 404. Я даже поставил домен передof / tag / $ 1, но это тоже не работает.

Любая помощь приветствуется, большое спасибо.

Christian

1 Ответ

0 голосов
/ 04 апреля 2011

В зависимости от версии apache, начальная косая черта не требуется. (Вы можете поместить /?, Если хотите иметь возможность сопоставить оба случая), см. @Jeff Parker комментарий.

Также, если вы хотите, чтобы URL отображался в браузере как http://www.mydomain.de/tag/my-apache при вводе http://www.mydomain.de/my-apache-tag.html, вы должны добавить флаг [R] для перенаправления.

И, конечно, ваш файл на сервере должен иметь имя my-apache в каталоге tag/. Или у вас будет ошибка 404.

Если вы хотите, чтобы клиент набрал http://www.mydomain.de/tag/my-apache и был обслужен http://www.mydomain.de/my-apache-tag.html, ваше правило неверно и должно быть:

RewriteRule ^tag/(.*)$ /$1-tag.html

Если вы хотите совместить оба поведения, будьте осторожны с циклами.

...