Я хочу, чтобы каталог www.example.com/core был переведен в строку, а не просто запрещал доступ к нему. это возможно?

ОБНОВЛЕНИЕ (ЕЩЕ НЕ УДАЧИ):

Мой текущий .htaccess

#Options -Multiviews
RewriteEngine On

#Remove the comments below to enable enforcing HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Handle Front Controller...
RewriteBase /public
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

#RewriteRule ^(.*)$ launcher.php?urls=$1 [QSA,L]
RewriteRule . launcher.php [L]

Вот несколько сценариев:

Я пишу URL www.example.com/some-dir-that-does-not-exist, и он отлично работает.

Я пишу URL www.example.com/url-that-DOES-exist, и браузер перенаправляет его на www.example.com/url-that-DOES-exist/?url=url-that-DOES-exist

1
Mikołaj Marciniak 6 Янв 2016 в 09:34

2 ответа

Лучший ответ

Это происходит из-за того, что модуль mod_dir добавляет косую черту перед реальными каталогами и выполняет 301 редирект после вашего правила перезаписи.

Чтобы исправить это, сделайте это так:

DirectorySlash Off
RewriteEngine On
RewriteBase /public/

RewriteCond %{THE_REQUEST} /launcher\.php [NC]
RewriteRule ^ - [F]

#Remove the comments below to enable enforcing HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# add a trailing slash to directories
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L]    

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/?$ launcher.php?urls=$1 [QSA,L]
2
anubhava 6 Янв 2016 в 07:55

Ваш код станет:

#Options -Multiviews
RewriteEngine On

#Remove the comments below to enable enforcing HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteBase /public

# Treat existing /core directory as non-existing (handled by launcher.php)
RewriteCond %{REQUEST_URI} ^/core(/.*)?$
RewriteRule . launcher.php [L]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

#RewriteRule ^(.*)$ launcher.php?urls=$1 [QSA,L]
RewriteRule . launcher.php [L]
0
Eduardo Escobar 6 Янв 2016 в 06:58