【发布时间】:2023-03-10 07:22:02
【问题描述】:
我一直在寻找这个问题的答案,但找不到任何有我确切问题的人,并希望其他人也有这个问题。
我使用虚拟主机在本地安装了 Laravel,它安装在根目录下。我现在不得不将此安装移动到位于http://domain.com/~username 的另一台服务器上,我的所有文件都在/~username/ 中,我正在使用.htaccess 从http://domain.com/~username 访问public 文件夹。
我还正确设置了路径并将我的站点 URL 设置为 app.php。
除了我的路线之外,几乎所有东西都可以工作。
如果我导航到http://domain.com/~username,我会得到NotFoundHttpException
这是我的主页路线:
Route::get('/', function() { ... });
如果我把它改成
Route::get('/~username', function() { ... });
它显示了主页。这并不完全理想,而且有点骇人听闻,而且除了主页之外还有很多问题。
我几乎所有的东西都有其他问题,因为 Laravel 认为它安装在根文件夹中,而不是 /~username/。
我的问题是我怎样才能让 Laravel 看到它安装到 http://domain.com/~username/ 而不是 http://domain.com/?
编辑:添加 .htaccess 文件
我当前在根目录下的 .htaccess 文件(/~用户名)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /~username/
RewriteCond %{THE_REQUEST} ^GET\ /public/ [NC]
RewriteRule ^public/(.*)$ $1 [L,R=301,NE]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
</IfModule>
和 /public 中的 .htaccess 文件
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /~username/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
</IfModule>
【问题讨论】:
-
您的网站使用什么网络服务器?
-
Apache/2.2.22 (Debian)
-
对不起,我删除了我的答案,因为我看到你的问题在路径中包含
~username。 -
所以最后,您是希望在 url 中使用您的用户名,还是只是想确保当您转到
http://domain.com/时,您会被带到~/username/projectname/中的公共文件夹文件夹? -
Blergh,我对 .htaccess 自定义不够精通,无法在这方面提供很多帮助。我认为您在正确的轨道上将 htaccess 重定向到您的用户文件夹的公用文件夹,然后在服务器命中公用文件夹后尝试将用户名包含在路径中,但我不确定如何建议修复它。您可以尝试探索像 htaccessredirect.net 这样的 htaccess 重定向生成器站点。请务必保留原始 htaccess 文件的备份,以便在需要时回滚。希望这里的其他人能够给您一个好的答案。
标签: php apache .htaccess laravel routes