.htaccess URL重写,索引为“a”;“公众”;文件夹

.htaccess URL重写,索引为“a”;“公众”;文件夹,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我是开发领域的新手。我拼命想得到好的网址。我检查了网站上类似的问题,但我找不到确切的我需要的。或者我做得很糟糕 情况是这样的:我为一个站点设置了一个项目,该站点的index.php文件位于一个名为Public的文件夹中 更清楚地说,以下是我现在访问已建站点主页的URL: http://Domain Name.com/Folder/Name of the site/public 我担心的是公用文件夹:我不希望它出现在URL中。 以下是我想获得的URL: http://Domain Name.com

我是开发领域的新手。我拼命想得到好的网址。我检查了网站上类似的问题,但我找不到确切的我需要的。或者我做得很糟糕

情况是这样的:我为一个站点设置了一个项目,该站点的index.php文件位于一个名为Public的文件夹中

更清楚地说,以下是我现在访问已建站点主页的URL: http://Domain Name.com/Folder/Name of the site/public

我担心的是公用文件夹:我不希望它出现在URL中。 以下是我想获得的URL: http://Domain Name.com/文件夹/站点名称

事实上,我希望这个URL允许将索引文件放在文件夹“Public”中

我无法访问Apache配置(共享主机),因此我在项目中放置了一个.htaccess(即:www/Folder/Name of the site/.htaccess)。内容如下:

Options -Indexes +FollowSymLinks +Multiviews
RewriteEngine On
RewriteBase /public/
RewriteRule ^(.*)$ index.html [NC,L]

我现在做了一件非常简单的事情,因为我尝试了很多事情,但没有得到有效的结果。

我不太确定你想做什么,但是如果你想删除出现在URL中的
/public/
路径,你需要从所有链接中删除它,第二,关闭多视图,这不是你想要的,第三,当请求
/public/
时,您需要一个规则来从外部重定向浏览器,然后您需要在内部重写请求以指向public

Options -Indexes +FollowSymLinks -Multiviews
RewriteEngine On

# externally redirect, must match against %{THE_REQUEST}
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /public/
RewriteRule ^/?public/(.*)$ /$1 [L,R=301]

# internally rewrite it back, but we must first check that it's pointing to a valid resource:
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -s
RewriteRule ^(.*)$ /public/$1 [L]

我不太清楚你想做什么,但是如果你想删除URL中出现的
/public/
路径,你需要从所有链接中删除它,第二,关闭多视图,这不是你想要的,第三,当请求
/public/
时,你需要一个规则从外部重定向浏览器,然后您需要在内部重写请求以指向public

Options -Indexes +FollowSymLinks -Multiviews
RewriteEngine On

# externally redirect, must match against %{THE_REQUEST}
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /public/
RewriteRule ^/?public/(.*)$ /$1 [L,R=301]

# internally rewrite it back, but we must first check that it's pointing to a valid resource:
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -s
RewriteRule ^(.*)$ /public/$1 [L]

嗨,乔恩。谢谢你的帮助。是,我想删除URL中的/public/path以访问主页。我尝试了你的解决方案,收到了一条“403禁止”的信息。my.htaccess是否位于正确的位置(位于公用文件夹上方)?还有其他想法吗?@Wook htaccess文件(或至少这些规则)需要在您的文档根目录中,即public所在的目录中。鉴于站点的结构(www/Folder1/Folder of the site),我认为document_root代表文件夹www。无论如何,我将htaccess放在站点的文件夹中(public所在的目录)但它不起作用。我还有403。嗨,乔恩。谢谢你的帮助。是,我想删除URL中的/public/path以访问主页。我尝试了你的解决方案,收到了一条“403禁止”的信息。my.htaccess是否位于正确的位置(位于公用文件夹上方)?还有其他想法吗?@Wook htaccess文件(或至少这些规则)需要在您的文档根目录中,即public所在的目录中。鉴于站点的结构(www/Folder1/Folder of the site),我认为document_root代表文件夹www。无论如何,我将htaccess放在站点的文件夹中(public所在的目录)但它不起作用。我还有“403”。