2014-12-29 3 views
2

Я новичок в .htaccess, и я искал дни, но не смог найти решение, которое соответствует моей ситуации.Получение части URI после перенаправления .htaccess

Так что в основном я хочу использовать .htaccess перенаправить запросы в подпапку, не показывая подпапку в адресной строке браузера. Со следующим файлом .htaccess я мог бы добиться этого. (Заметим, что это на локальной машине, а не фактического хостинга)

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /subfolder/$1 
RewriteRule ^(/.*)?$ /subfolder/index.php?rt=$1 [L,QSA] 

Обратите внимание, что у меня есть «ВУ = $ 1», чтобы получить информацию о маршрутизации пути от $ _GET [] массив , Но похоже, что переписывает URL-адрес, который затем испортил мою функцию маршрутизатора.

Например, целевой UrL для функции .ajax является «index/survey_update», что должно привести к indexController-> survey_update().

Но с переадресацией, теперь путь будет
/подпапка/подпапка/index/survey_update/survey_update.
И маршрутизатор не сможет разрешить его правильному контроллеру и действию.

Может ли кто-нибудь сообщить мне, почему URL-адрес выглядит забавным (вложенная папка дублируется, а последний раздел также дублируется), и есть способ извлечь правую часть URL-адреса (то есть index/survey_update в этом случае) на изменение конфигурации .htaccess? Благодарю.

+0

Если вы используете какой-либо MVC-фрейм, используйте их маршруты. Это намного проще и наиболее целесообразно, чем .htaccess –

ответ

1

Вы можете просто использовать это правило:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*?)/?$ /subfolder/index.php?rt=$1 [L,QSA] 

Помните, что RewriteCond применимо только к следующему RewriteRule.

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