Apache URL rewrite - пытается замаскировать имя папки - PullRequest
3 голосов
/ 11 февраля 2010

У меня есть веб-сайт, расположенный по адресу example.com/cmsFolder, который я хочу переместить на example.com/newFolder. Я не могу вручную переместить это, поскольку это полностью разрушает эту глупую CMS.

Так что я пытаюсь использовать mod_rewrite, чтобы замаскировать имя папки и сохранить его красивым.

RewriteEngine on
RewriteRule ^cmsFolder/(.*)$ /newFolder/$1 [L]

Это не с 404. Как я могу замаскировать имя папки? : /

Ответы [ 4 ]

4 голосов
/ 11 февраля 2010

Попробуйте, это работает для меня при добавлении этих правил в основной файл конфигурации Apache:

RewriteEngine on
RewriteRule ^/cmsFolder/(.*)$ /newFolder/$1 [L]

Я думаю, что вы забыли первую косую черту перед cmsFolder. Если вы хотите посмотреть логи mod_rewrite:

RewriteLog "_PATH_TO_YOUR_\rewrite.log"
RewriteLogLevel 9

Поскольку Паоло комментирует лог-директивы, они не разрешены в .htacces. Легко понять почему: -)

Edit:

Возможно, если вы хотите замаскировать запрос, вы будете использовать модификатор [P] (Proxy):

RewriteEngine on
RewriteRule ^/cmsFolder/(.*)$ /newFolder/$1 [P]
1 голос
/ 11 февраля 2010

Еще более простым решением может быть просто символическая ссылка newFolder на cmsFolder

ln -s cmsFolder/ newFolder

Или вы можете создать короткий PHP скрипт , если у вас нет доступа к оболочке:

<?php symlink('cmsFolder','newFolder'); ?>
0 голосов
/ 21 апреля 2014
RewriteEngine on
RewriteCond %{REQUEST_URI} !^subfolder/login
RewriteRule ^login/(.*)$ subfolder/login/$1 [L]
0 голосов
/ 11 февраля 2010

Если вы хотите переписать запросы на /newFolder/… внутренне на /cmsFolder/…, вам нужно пойти наоборот:

RewriteEngine on
RewriteRule ^newFolder/(.*)$ /cmsFolder/$1 [L]
...