问题描述
问题
如何从我的 URL 中删除 /public/?
How can I remove /public/ from my URLs?
问题
当我访问 /app/about
时,URL 更改为 /app/public/about
和 app/user/2
更改/app/user.php/?username=2
When I go to visit /app/about
the URL changes to /app/public/about
and app/user/2
changes to /app/user.php/?username=2
设置
public 文件夹外的 .htaccess
包含:
The .htaccess
outside of the public folder contains:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /app/
# remove /public/ from URL
RewriteCond %{REQUEST_URI} !/public [NC]
RewriteRule ^(.*)/?$ public/$1
这很好用.当我访问 localhost:8888/app/
时,它会加载 public 文件夹内的 index.php
文件.
This works fine. When I visit localhost:8888/app/
it loads up the index.php
file inside the public folder.
public 文件夹内的 .htaccess
包含:
The .htaccess
inside of the public folder contains:
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
推荐答案
您的 # Add trailing slash
规则似乎有问题.您可以尝试将其注释掉以进行测试吗.
Your # Add trailing slash
rule appears to be problem. Can you try commenting it out for testing.
/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]
这篇关于.htaccess:从 URL 中删除 public的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!