htaccess: несколько вложенных папок и доступ к веб-сайту
Я застрял, правильно настраивая свой htaccess. В настоящее время у меня есть следующая ситуация и структура файла в моей папке htdocs:
- .htaccess
- / веб-сайт
- / клиенты / blabla
- / somefolder
Как вы можете догадаться, папка "website" содержит все файлы, которые должны быть доступны при переходе к http://mydomain.com - это прекрасно работает с текущим htaccess:
RewriteEngine on
# remove www
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]
# subfolder
RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.mydomain.com$
RewriteCond %{REQUEST_URI} !^/website/
RewriteRule (.*) /website/$1
# clean urls
RewriteRule ^website/([a-z0-9-]+)$ website/$1.php
Моя проблема: пока я хочу, чтобы мой сайт был доступный так, как это сейчас, я также хочу иметь возможность доступа http://mydomain.com/clients/blala и http://mydomain.com/somefolder и т. д... С моим текущим htaccess это приводит к ошибке 404 говоря " запрошенный URL / website / clients / blabla не был найден на этом сервере."
Что мне нужно добавить / изменить в мой htaccess, чтобы это сработало?
Заранее спасибо
2 ответов:
Я думаю, что вам просто нужно добавить еще пару условий, чтобы исключить их.
RewriteCond %{REQUEST_URI} !^/clients/ RewriteCond %{REQUEST_URI} !^/somefolder/И поместите их перед вашим правилом перезаписи в разделе вложенных папок. Это остановит его встраивание
/website/в URI, если он уже содержит/clients/или/somefolder/
Это должно сработать.
RewriteEngine on # remove www RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC] RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L] # subfolder RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ RewriteCond %{REQUEST_URI} !^/website/ RewriteCond %{REQUEST_URI} !^/somefolder/ RewriteCond %{REQUEST_URI} !^/client/blabla/ RewriteRule (.*) /website/$1 # clean urls RewriteRule ^website/([a-z0-9\-]+)$ website/$1.php
Comments