2014-09-04 2 views
1

Мой Htaccess выглядит следующим образомHtaccess не возвращает значение требуется

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=modelname&action=pagename&reff=$1 

я использовал index.php в качестве контроллера для визуализации представления с помощью модуля параметров и действий,

Я хочу переписать следующий URL http://example.com/username/splash

и хотел бы получить имя пользователя, но когда я печатаю $ _GET [ 'Reff'] печатает index.php

Может кто-нибудь, пожалуйста, подскажите, что случилось?

Благодаря

ответ

1

Вы видите $_GET['reff']=index.php, потому что ваше правило переписан дважды работает. Сначала на /username/splash URI, а затем 2-й раз на /index.php URI. Это связано с тем, что ваш шаблон URI ^([^/]+)/([^/]+)/?$ соответствует обоим URI.

Для предотвращения этого нежелательного поведения, необходимо иметь ваше правило так:

# if request is not for a file 
RewriteCond %{REQUEST_FILENAME} !-d 
# if request is not for a directory 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=modelname&action=pagename&reff=$1 [L,QSA] 
Смежные вопросы