2009-08-12 4 views
21

Мне интересно, можно ли использовать .htaccess для перезаписи имени папки. Я имею в виду это.переписать имя папки, используя .htaccess

Допустим, у меня есть URL, как:

www.site.com/folder1/page.php 

Теперь я хочу переписать URL, чтобы (например)

www.site.com/apple/page.php 

folder1 является существующую папку на моем вебпространства.

Важно: «яблоко» - это не папка, а просто имя!

Ok вот шаг за шагом план:

  1. Типы пользователей www.site.com/folder1/login.php
  2. URL-адрес должен переписать и не перенаправить URL в www.site.com/apple/login.php

Это означает, что apple просто имя, а не каталог. Весь код должен быть только из папки1. Acutally яблоко должно быть просто псевдонимом для folder1. Я не могу просто переименовать folder1 в Apple. Поэтому я просто переписал бы folder1 на apple.

+0

делает папку яблока существует на вашем вебпространстве тоже? – Josh

+0

Нет, это просто имя !!!! – sanders

+0

жаль, что вам нужно быть более ясным, что вы хотите. можете ли вы дать нам шаг за шагом то, что вы хотите, например, то, что URL-адрес, который вводит пользователь, и где фактический файл находится в вашем веб-пространстве. – Josh

ответ

33

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/….

+0

Ах, Гумбо Я думаю, что ты прав. Я неправильно понял, что означал оригинальный плакат, это описано в обратном порядке. +1 – zombat

+0

@zombat: Как всегда;) – Gumbo

+0

Я пробовал это с http://site.com/folder1/login.php, но он не переписывается на http://site.com/apple/login.php – sanders

5

попробовать:

RewriteRule ^/apple(.*)?$ /folder1$1 [NC] 

Если папка, которую нужно появиться в URL в первой части заявления - это то, что он будет соответствовать против и второй части «переписывает» его существующий папка. флаг [NC] означает, что он будет игнорировать различия в случаях, например, Apple/будет продолжать двигаться вперед.

Смотрите здесь для учебника: http://www.sitepoint.com/article/guide-url-rewriting/

Существует также хороший тест утилита для окон вы можете скачать здесь: http://www.helicontech.com/download/rxtest.zip Просто к сведению для тестера вы должны выйти из доменного имени - так тест был бы против /folder1/login.php

перенаправлять из/folder1 в/яблоко попробовать это:

RewriteRule ^/folder1(.*)?$ /apple$1 [R] 

для перенаправления, а затем перезаписи просто объединить выше в файле Htaccess:

RewriteRule ^/folder1(.*)?$ /apple$1 [R] 
RewriteRule ^/apple(.*)?$ /folder1$1 [NC] 
+0

спасибо за вашу помощь, но когда я тестирую это: Я пробовал это с site.com/folder1/login.php, но он не переписывается на site.com/apple/login.php Я получаю шаблоны не mach – sanders

+0

@Josh : your edit RewriteRule ^/folder1 (. *)? $/apple1 $ 1 [R] не работает eiter. – sanders

+0

Эти перенаправления медленнее? когда происходит перенаправление, по сравнению с непереадресованной версией? – Miguel

Смежные вопросы