2016-05-09 3 views
0

Я использую HTAccess для загрузки файлов, когда пользователи запрашивают каталог (если файл существует), Так что если вы идете в/логин/загрузке /login.php и т.д. и т.п.Htaccess каталог RewriteRule перенаправления

Если запрос не является index.php, и если «map» (файл) не существует, он должен загрузить user.php с картой за ним, так что/thomas/должен загрузить user.php? dir = thomas

Это то, что я хочу, но я не могу заставить его работать, это в настоящее время мой htaccess, он работает, но login/register/logout также добавляются к user.php, и когда я раскомментирую строку, это приведет к в бесконечном цикле, когда (например) загружается индекс.

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !index\.php [NC] 
#RewriteRule ^(login|register|logout)(/|)$ $1.php [L,NC,QSA] 
RewriteRule ^([^\?]*)$ user.php?dir=$1 [L,QSA] 

Заранее спасибо!

Редактировать: Я изменил .htaccess, поэтому он проверяет, существует ли файл php, и если да, он включает его. Но теперь моя папка/настройки/больше не работает; (

RewriteEngine On 

RewriteBase/
## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1/ [R,L,NC] 

# To internally redirect /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} ^(.*?)(/(.*)|)$ 
RewriteCond %{DOCUMENT_ROOT}$1.php -f 
RewriteRule ^(.*?)(/(.*)|)$ $1.php?args=$2 [L,QSA] 


RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\?]+)$ user.php?dir=$1 [L,QSA] 

Я хочу то же самое произойдет, как с корнем я хочу попробовать, например, что, когда я иду/настройки/модулей. он сначала проверяет, существует ли /settings/modules/index.php, если нет, проверяет, существует ли /settings/modules.php, если нет, проверьте, существует ли файл settings.php, если есть, включить settings.php? args = modules но я не знаю, если это возможно: \

Я надеюсь, что мои намерения ясно х)

ответ

0

Try:

RewriteEngine On 

RewriteBase/
# let existing file/dir pass through untouched# 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
##### 
RewriteRule ^(login|register|logout)/?$ $1.php [L,NC,QSA] 
RewriteRule ^(.+)$ user.php?dir=$1 [L,QSA] 
+0

Он по-прежнему дает мне бесконечную проблему перезаписи: 3 –

+0

Попробуйте очистить кеш браузера – starkeen

+0

Я отредактировал свое оригинальное сообщение, я изменил некоторые вещи, чтобы быть более глобальными, но он сломал папку/настройки / –

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