перепишите имя папки, используя .htaccess
Вопрос
Мне интересно, можно ли использовать .htaccess
переписать имя папки.Я имею в виду вот что.
Допустим, у меня есть URL-адрес типа:
www.site.com/folder1/page.php
Теперь я хочу переписать URL-адрес (например)
www.site.com/apple/page.php
Папка1 — это существующая папка в моем веб-пространстве.
важный:«яблоко» — это не папка, а просто имя!
Хорошо, вот пошаговый план:
- Типы пользователей
www.site.com/folder1/login.php
- URL-адрес следует переписать, а не перенаправлять на
www.site.com/apple/login.php
Это значит, что apple
это просто имя, а не каталог.Весь код должен исходить из папки1.На самом деле яблоко должно быть просто псевдонимом для folder1
.Я не могу просто переименовать folder1
к Apple
.Поэтому я бы просто переписал folder1
к apple
.
Решение
mod_rewrite может перезаписывать/перенаправлять только запрошенные URI.Поэтому вам нужно будет запросить /apple/…
чтобы переписать его в соответствующий /folder1/…
.
Попробуй это:
RewriteEngine on
RewriteRule ^apple/(.*) folder1/$1
Это правило перезапишет каждый запрос, начинающийся с пути URI. /apple/…
внутри, чтобы /folder1/…
.
РедактироватьПоскольку вы на самом деле ищете наоборот:
RewriteCond %{THE_REQUEST} ^GET\ /folder1/
RewriteRule ^folder1/(.*) /apple/$1 [L,R=301]
Это правило предназначено для совместной работы с другим правилом, указанным выше.Запросы /folder1/…
будет перенаправлено на внешний адрес /apple/…
и запросы /apple/…
затем будет переписан внутри обратно на /folder1/…
.
Другие советы
пытаться:
RewriteRule ^/apple(.*)?$ /folder1$1 [NC]
Папка, которую вы хотите отобразить в URL-адресе, находится в первой части оператора — это то, с чем она будет сопоставляться, а вторая часть «перезаписывает» ее в существующую папку.флаг [NC] означает, что он будет игнорировать различия в регистре, например, Apple/ все равно будет пересылать.
См. здесь учебник: http://www.sitepoint.com/article/guide-url-rewriting/
Существует также хорошая утилита тестирования для Windows, которую можно скачать здесь:http://www.helicontech.com/download/rxtest.zip Просто отметим для тестировщика, что вам нужно исключить имя домена, чтобы проверка проводилась на /folder1/login.php.
для перенаправления из /folder1 в /apple попробуйте следующее:
RewriteRule ^/folder1(.*)?$ /apple$1 [R]
для перенаправления, а затем перезаписи просто объедините приведенное выше в файле htaccess:
RewriteRule ^/folder1(.*)?$ /apple$1 [R]
RewriteRule ^/apple(.*)?$ /folder1$1 [NC]