在“public”文件夹中使用索引重写URL

时间:2012-10-31 19:13:13

标签: .htaccess mod-rewrite url-rewriting

我是开发界的新手。我拼命想要获得好的URL。我检查了网站是否有类似的问题,但我找不到我需要的确切内容。或者我做得很糟糕。

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

更清楚一点,这是我现在要访问内置网站主页的网址: http:// Domain Name.com/文件夹/网站/公共名称

我关注的是文件夹Public:我不希望它出现在URL中。 这是我想要的网址: http://域名/文件夹/网站名称

事实上,我希望此URL允许将索引文件放在“公共”文件夹中。

我无法访问Apache配置(共享主机)所以我有一个.htaccess我放在项目中(即: www /文件夹/网站名称/.htaccess )。以下是其内容:

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

我现在做的很简单,因为我尝试了很多没有效果的事情。

1 个答案:

答案 0 :(得分:1)

不确定您要执行的操作,但如果您要删除网址中显示的/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]