Назад | Перейти на главную страницу

Доступ к каталогу во время перезаписи мода

Я использую следующий файл .htaccess, чтобы мой URL оставался чистым

RewriteEngine On
RewriteRule ^([a-zA-Z\-0-9]+)/?$ index.php?get1=$1 [B]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2&get3=$3

Пока это работает, но теперь я хочу получить доступ к каталогу.

Например. Если кто-то переходит на mysite.com/news/post-title, URL-адрес перезаписывается, и все в порядке.

Теперь я хочу иметь каталог, который можно будет просмотреть, когда кто-то перейдет на mysite.com/directory и покажет его содержимое.

Есть ли способ сделать это?

Поставить RewriteCond перед каждым RewriteRule, чтобы заставить RewriteRule должны быть пропущены, если запрос сделан в место, которое является каталогом и существует.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z\-0-9]+)/?$ index.php?get1=$1 [B]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2&get3=$3

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

RewriteCond %{REQUEST_FILENAME} !-f

Я бы пошел на что-то вроде следующего;

<Location /Somedirectory>
    Options Indexes
</Location>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^/Somedirectory - [L]

RewriteRule ^([a-zA-Z\-0-9]+)/?$ index.php?get1=$1 [B]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2&get3=$3