.htaccess:从 URL 中删除 public

ash*_*ley 4 regex apache .htaccess mod-rewrite redirect

问题

如何从我的网址中删除/public/ ?

问题

当我访问时/app/aboutURL 更改为/app/public/aboutapp/user/2更改为/app/user.php/?username=2

设置

/应用程序/ .htaccess

公用文件夹.htaccess的外部包含:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /app/

# remove /public/ from URL
RewriteCond %{REQUEST_URI} !/public [NC]
RewriteRule ^(.*)/?$ public/$1
Run Code Online (Sandbox Code Playgroud)

这很好用。当我访问时localhost:8888/app/,它会加载公共index.php文件夹中的文件。

/应用程序/公共/ .htaccess

.htaccess公用文件夹内部包含

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

# Add trailing slash
RewriteCond %{REQUEST_URI} ^(.+[^/])$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . %1/ [L,R=301]

# API Pages
# ------------------------------------------------------------
RewriteRule ^user/([a-z0-9]+)/?$ user.php?username=$1 [L,NC]


# Generic Pages
# ------------------------------------------------------------
RewriteRule ^about/?$ about.php [L,NC]

# Error Pages
# ------------------------------------------------------------
ErrorDocument 404 /404.php
Run Code Online (Sandbox Code Playgroud)

相关在“公共”文件夹中使用索引进行 URL 重写

anu*_*ava 5

你的# Add trailing slash规则似乎有问题。您可以尝试将其注释掉以进行测试吗?

/app/.htaccess

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /app/

## Adding a trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s/+(.+?[^/])[?\s] [NC]
RewriteRule ^ /%1/ [L,R=301]

# remove /public/ from URL
RewriteCond %{REQUEST_URI} !/public/ [NC]
RewriteRule ^(.*?)/?$ public/$1 [L]
Run Code Online (Sandbox Code Playgroud)