Apache 如何使用.htaccess重写删除目录?

Apache 如何使用.htaccess重写删除目录?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,各位! 我的网站上有多个员工,他们都有各自的项目。但我有一个问题,因为网站是这样设置的: site.com/myownproject1 site.com/myownproject2 site.com/john/projectbyjohn1 site.com/john/projectbyjohn2 site.com/james/projectbyjames1 site.com/james/projectbyjames2 我想设置我的.htaccess文件,以便在有人试图访问没有名称前缀

各位!

我的网站上有多个员工,他们都有各自的项目。但我有一个问题,因为网站是这样设置的:

site.com/myownproject1

site.com/myownproject2

site.com/john/projectbyjohn1

site.com/john/projectbyjohn2

site.com/james/projectbyjames1

site.com/james/projectbyjames2
我想设置我的.htaccess文件,以便在有人试图访问没有名称前缀的目录时重写到这些文件夹中,因此

site.com/john/projectbyjohn2
可以通过

site.com/projectbyjohn2
这就是我的.htaccess currenlty的外观:

DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
#Lots of stuff that does not matter
编辑:完整.htaccess截至目前:

DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
Header set Access-Control-Allow-Origin "*"
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [S=2]
RewriteCond %{DOCUMENT_ROOT}/mitch/$1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/mitch/$1 -f
RewriteRule ^(.*)$ /mitch/$1 [L]
ErrorDocument 400 /ErrorDocument.php?err=400
ErrorDocument 401 /ErrorDocument.php?err=401
ErrorDocument 402 /ErrorDocument.php?err=402
ErrorDocument 403 /ErrorDocument.php?err=403
ErrorDocument 404 /ErrorDocument.php?err=404
ErrorDocument 405 /ErrorDocument.php?err=405
ErrorDocument 406 /ErrorDocument.php?err=406
ErrorDocument 407 /ErrorDocument.php?err=407
ErrorDocument 408 /ErrorDocument.php?err=408
ErrorDocument 409 /ErrorDocument.php?err=409
ErrorDocument 410 /ErrorDocument.php?err=410
ErrorDocument 411 /ErrorDocument.php?err=411
ErrorDocument 412 /ErrorDocument.php?err=412
ErrorDocument 413 /ErrorDocument.php?err=413
ErrorDocument 414 /ErrorDocument.php?err=414
ErrorDocument 415 /ErrorDocument.php?err=415
ErrorDocument 416 /ErrorDocument.php?err=416
ErrorDocument 417 /ErrorDocument.php?err=417
ErrorDocument 500 /ErrorDocument.php?err=500
ErrorDocument 501 /ErrorDocument.php?err=501
ErrorDocument 502 /ErrorDocument.php?err=502
ErrorDocument 503 /ErrorDocument.php?err=503
ErrorDocument 504 /ErrorDocument.php?err=504
ErrorDocument 505 /ErrorDocument.php?err=505
试试这个

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [S=2]

RewriteCond %{DOCUMENT_ROOT}/john/$1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/john/$1 -f
RewriteRule ^(.*)$ /john/$1 [L]

RewriteCond %{DOCUMENT_ROOT}/james/$1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/james/$1 -f
RewriteRule ^(.*)$ /james/$1 [L]
如果根目录中已经存在目录/文件,则第一条规则跳过以下两条。接下来的两个简单地根据在/john或/james中找到文件/目录的位置解析文件/目录


请注意,如果John和James决定将一个文件或子目录命名为相同的名称,那么我们将陷入困境。在这种情况下,首先定义的规则/john将被取代。

您是否提前知道projectbyjohn1、projectbyjames2等将是什么?是的,我知道它们将被调用,并且我愿意在.htaccess中手动指定它们。这将在所有页面上显示404错误,而不显示默认的404页面。错误:/[S=2]未找到[S=2]之前需要有一个-。因此,出现了错误。你能再试一次吗?这可以重定向它-谢谢,但我有兴趣重写它:/上述规则不重定向。也许,您的另一条规则可能会产生干扰。当您访问site.com/projectbyjohn2时,会发生什么?