2015-11-30 3 views
1

У меня есть проблемы, касающиеся моей .htaccess.htaccess URL Rewrite существующий каталог

Я использую следующие правила перезаписи:

RewriteRule ^/?([\w]+)$ /index.php?$1 

RewriteRule ^/?([\w]+)/?([\w]+)$ /index.php?$1=$2 

RewriteRule ^/?([\w]+)/?([\w]+)/?([\w]+)$ /index.php?$1=$2&$3 

RewriteRule ^/?([\w]+)/?([\w]+)/?([\w]+)/?([\w]+)$ /index.php?$1=$2&$3=$4 

Так, например, URL domain.com/admin/login вызывает url domain.com/index.php?admin=login

Это хорошо работает, но когда я только запрашиваю url domain.com/admin, сервер перенаправляет меня на domain.com/admin/?admin который показывает только белую страницу (я хочу добраться до domain.com/index.php?admin)

Проблема в том, что на сервере под названием/admin существует каталог, который ранее использовался для обозначения этого каталога/администрации, но из-за проблемы с файлом cookie, который у меня был чтобы переименовать его в /admin)

Есть ли способ, который, если я использую url domain.com/admin, что я правильно перенаправляю domain.com/index.php?admin? Что мне нужно изменить в файле .htaccess?

Я надеюсь, что я мог бы объяснить проблему хорошо, я новичок в .htaccess, так что я не профессионал с называнием проблемы точно ...

Спасибо!

ответ

1

Чтобы переписать файл, вам необходимо отключить слэш каталога.

Поместите следующую строку выше «RewriteEngine на» директивы в вашем Htaccess

DirectorySlash off 

Тогда вы сможете переписать «админ» (без пробелов), чтобы «index.php», «администратор /» с косой чертой откроется каталог «admin»

+0

Спасибо большое, это устранит проблему! Но теперь проблема с cookie снова появилась: без установки пути к setcookie() скрипт входа не работает вообще. Использование пути, как '/' позволяет мне войти в систему, но когда я выхожу из системы, cookie не удаляется !? –

1

Ответ ДА. При игнорировании файлов/папок в .htacces вы используете RewriteCond Его как говорится в браузере, чтобы пропустить эту папку/файл. В вашем случае вы ставите это выше правил перезаписи.

RewriteCond %{REQUEST_URI} !^/admin 

Это игнорирует папку администратора. Вы также можете использовать это для файлов, таких как

RewriteCond %{REQUEST_URI} !.*\.(php|txt|docx) 

выше будет пропускать файлы, которые заканчиваются .php или .txt или .docx