Regex HTACCESS将重要目录视为参数

Regex HTACCESS将重要目录视为参数,regex,apache,.htaccess,mod-rewrite,directory,Regex,Apache,.htaccess,Mod Rewrite,Directory,我希望将目录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=30

我希望将目录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/somedir,但它并不存在
,而且运行良好


我编写了一个确实存在的url
www.example.com/url
,浏览器将其重定向到
www.example.com/url确实存在/?url=url确实存在

,这是由于
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]
您的代码将成为:

#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]

你能说得更清楚些吗?我的意思是,如果我得到| POST | HEAD | which request
http://www.example.com/core
?我不是说不存在的目录。那些我没有问题。但是,如果我希望一个确实存在的目录被视为一个不存在的目录。现在如果我写www.example.com/core,浏览器会转到www.example.com/core/?url=core我不确定这是否是您想要实现的。如果您添加此规则
RewriteRule^/core(/.*)$-[R=404,L]
它做您想要的吗?我真的不明白要翻译成字符串的部分。它仍然重定向到
/core/?url=core
,现在添加了一个500错误,您希望现有目录被视为不存在的目录吗?让我检查一下,很抱歉,它不起作用。仍然添加一个尾随斜杠。也许您想将此讨论转移到聊天?我觉得这将是一个很长的oneNope,不会很长,因为我怀疑你正在访问浏览器缓存。清除浏览器缓存并重新测试。顺便说一句,我已经在Apache上测试了所有这些代码
localhost/core
变为
localhost/core/
,它仍然被路由到
launcher.php?url=core
这确实有效,我以为改名chrome会假定缓存已清除,但当我显式清除它时,它确实有效。非常感谢你!非常感谢!仍然添加/core/url=core请确保在修改.htaccess文件中的重定向规则后清除浏览器的浏览数据。你的意思是什么,为什么?你的浏览器可能仍在跟踪网站中的旧重定向。我打开了一个匿名文件,但一切都一样