Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 重定向到公用文件夹,并支持尾部斜杠_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Regex 重定向到公用文件夹,并支持尾部斜杠

Regex 重定向到公用文件夹,并支持尾部斜杠,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,这是我的.htaccess文件: RewriteEngine On DirectoryIndex index.php #Set 404 and 505 pages ErrorDocument 404 https://example.com/404/ ErrorDocument 500 https://example.com/500/ #Ignore AJAX requests RewriteCond %{REQUEST_METHOD} ^(POST)$ RewriteCond %{HTTP

这是我的.htaccess文件:

RewriteEngine On

DirectoryIndex index.php

#Set 404 and 505 pages
ErrorDocument 404 https://example.com/404/
ErrorDocument 500 https://example.com/500/

#Ignore AJAX requests
RewriteCond %{REQUEST_METHOD} ^(POST)$
RewriteCond %{HTTP:X-Requested-With} XMLHttpRequest [NC]
RewriteRule ^ - [L]

#Redirect 404 to correct page
RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /public/404.php [L]

#Redirect 500 to correct page
RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /public/500.php [L]

#Rewrite to /public folder
RewriteRule ^$ public/index.php [L]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

#Hide .php extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]
/admin/还有一个.htaccess文件:

RewriteEngine On

DirectoryIndex index.php

#Set 404 and 505 pages
ErrorDocument 404 https://example.com/404/
ErrorDocument 500 https://example.com/500/

#Ignore AJAX requests
RewriteCond %{REQUEST_METHOD} ^(POST)$
RewriteCond %{HTTP:X-Requested-With} XMLHttpRequest [NC]
RewriteRule ^ - [L]

#Redirect 404 to correct page
RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /public/404.php [L]

#Redirect 500 to correct page
RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /public/500.php [L]

#Rewrite to /public folder
RewriteRule ^$ public/index.php [L]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

#Hide .php extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]
除了一种情况外,它工作正常

正确的情况:

example.com/page -> Just shows the page
example.com/admin/ -> Works fine. 
但如果输入example.com/admin(不带尾随斜杠),它将重定向到/public/admin/。 我想从我的URL中隐藏该公共信息


如何始终获取一个干净的URL,该URL始终隐藏/public。如果
/public/admin/
也是一个目录,则在
行之前插入此重定向规则,以在事件中添加一个尾随斜杠:

# add a trailing slash if public/$1 is a directory
RewriteCond %{DOCUMENT_ROOT}/public/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=301,NE]
我找到了这个解决方案,并尝试了它,但它仍然显示/public,并且带有一个尾随斜杠,它会转到