mod_rewrite позиционирование и формулировка - PullRequest
0 голосов
/ 03 июня 2011

Я переименовал около 50 страниц моего сайта. Я хочу сделать внутренний переписать со старых страниц на новые страницы. Это пример, который дает Apache.

RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo\.html$  bar.html

Я не уверен, нужен ли мне rewriteBase /. У меня есть только отдельные веб-страницы (без подписки). Я понимаю, что термины «foo» и «bar» и «quux» являются универсальными словами для примера. Если у меня есть только один домен на этом сервере, и правило перезаписи будет применяться к корневому каталогу, нужно ли мне включать rewriteBase /, rewriteBase /~quux/ или мне даже нужно rewriteBase?

Я предполагаю, что при использовании rewriteBase /~quux/ фактический подкаталог вставляется в /~quux/. Даже если у меня нет подкаталогов, это правильно?

Может кто-нибудь организовать правильный сценарий, показанный выше?

Кроме того, я понимаю, что этот сценарий будет помещен ДО других директив .htaccess, таких как не-www в www и индекс в /. Это правильно?

RewriteEngine on
Options +FollowSymLinks

#rewrite old to new pages internaly
RewriteBase    /~quux/
RewriteRule    ^foo\.html$  bar.html

#non-www to www
RewriteCond
RewriteRule ...

#index to /
RewriteCond
RewriteRule ...

1 Ответ

0 голосов
/ 04 июня 2011

RewriteBase:

Если ваша страница похожа на:

http://mydomain.com/subdir/index.html

и ваш файл .htaccess находится в subdir/, тогда вам нужно установить его:

RewriteBase /subdir/

Это позволяет вашим правилам игнорировать подкаталог, поэтому

RewriteRule ^old_index.html$ new_index.html

перенаправит subdir/old_index.html на subdir/new_index.html

Positioning:

Положение правил имеет значение, только если вы не используете флаг [L] после своих правил. Этот модификатор говорит mod_rewrite прекратить переписывание и выполнить перенаправление. Если вы не используете его, механизм перезаписи сделает все возможное с вашим URL за один раз. Так что, если ваш URL-адрес такой:

http://mydomain.com/old_index.html

Будет преобразовано в

http://www.mydomain.com/new_index.html

Независимо от того, какое правило стоит первым, то, которое добавляет www. или тот, который указывает на новые страницы. Но если есть флаг [L], то это может быть сделано в 2 перенаправлениях.

...