Laravel重新路由子文件夹.htaccess
问题描述:
我需要将Laravel项目部署到域子文件夹。我已经将文件放在正确的位置,即与public_html
文件夹位于同一级别的项目文件夹,并且我已将公用文件夹的内容复制到public_html
(当然,我创建了symlink
来说明事实)。Laravel重新路由子文件夹.htaccess
我只有一个问题:
如果我去my-domain.com/proj-name
,我可以看到主页没有问题。
但是,当我去到项目页面my-domain.com/proj-name/about
(例如),我得到一个404 Not Found: The requested URL /proj-name/about was not found on this server.
我认为解决的办法是编辑重写规则上的.htaccess这样,当我浏览到my-domain.com/proj-name/about
,它消除了proj-name
仿佛它试图访问my-domain.com/about
。
我该怎么做?
这是我目前的的.htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
答
你应该做到以下几点:
RewriteCond %{REQUEST_URI} !^/proj-name/
RewriteRule ^(.*)$ proj-name/$1 [L]
注:以上应该在位于public_html
而不是在.htaccess
public_html/proj_name
我创建'.htaccess'在'public_html',但它仍然不起作用。在'public_html'里面,除了这两行'.htaccess'之外,我还有一个名为'proj_name'的符号链接,这个链接导致Laravel项目'public'文件夹。 –
你的符号链接是正确的。你是否将'public'中的'.htaccess'改为原来的状态? – user2094178
'public'文件夹中的'.htaccess'是我在我的问题中发布的(在Laravel 5.2项目创建时生成的)。 –