Laravel 正确删除/公开和连接文件
我见过很多类似的话题,我尝试了所有的话题,以前都很有效,每次都不一样,但现在什么都没有 所以我想从我的URL中删除/public,它适用于laravel-public_html,但不适用于构建版本 我正在使用VPS(CentOS 7和CWP 7) 我的结构是这样的:Laravel 正确删除/公开和连接文件,laravel,laravel-5,vps,host,Laravel,Laravel 5,Vps,Host,我见过很多类似的话题,我尝试了所有的话题,以前都很有效,每次都不一样,但现在什么都没有 所以我想从我的URL中删除/public,它适用于laravel-public_html,但不适用于构建版本 我正在使用VPS(CentOS 7和CWP 7) 我的结构是这样的: /home/admin/ -laravel -public_html (public folder for laravel) -laravel_build -build (public folder for laravel_buil
/home/admin/
-laravel
-public_html (public folder for laravel)
-laravel_build
-build (public folder for laravel_build)
有了这些,我就有了build.mypage.com和www.mypage.com
httpd.conf
...
ServerRoot "/usr/local/apache"
...
DocumentRoot "/home/admin/public_html"
<Directory "/home/admin/public_html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
index.php(构建)
我应该在.htaccess中添加一些内容吗?如果是,我需要将该.htaccess放在哪里
编辑:我已经在laravel routes(mod _rewrite)的公共文件夹中拥有.htaccess假设您使用的是MAMP或XAMP之类的东西,如果可能,请不要在httpd.comf中添加任何内容,相反,您可以做一些事情 如下面的httpd-vhosts.conf中所示 您可能需要在您的环境中查找一个目录来放置虚拟主机文件(有时您必须在httpd.conf中取消对该路径的注释) httpd-vhosts.conf中的条目示例:
<VirtualHost *:80>
ServerAdmin yourEmail@domain.com
DocumentRoot "/home/admin/laravel/public_html"
ServerName MySite1.com
ServerAlias MySite1.com
ErrorLog "logs/MySite1_com-error.log"
CustomLog "logs/MySite1_com_access.log" common
php_value error_log "logs/php_error.log"
</VirtualHost>
<VirtualHost *:80>
ServerAdmin yourEmail@domain.com
DocumentRoot "/home/admin/build"
ServerName subdomain.MySite1.com
ServerAlias subdomain.MySite1.com
ErrorLog "logs/subdoamain-MySite1-error.log"
CustomLog "logs/subdoamain-MySite1-error.log" common
php_value error_log "logs/php_error.log"
</VirtualHost>
服务器管理员yourEmail@domain.com
DocumentRoot“/home/admin/laravel/public\u html”
ServerName MySite1.com
ServerAlias MySite1.com
ErrorLog“logs/MySite1_com-error.log”
CustomLog“logs/MySite1_com_access.log”通用
php_值错误_log“logs/php_error.log”
服务器管理员yourEmail@domain.com
DocumentRoot“/主页/管理员/构建”
ServerName subdomain.MySite1.com
ServerAlias subdomain.MySite1.com
ErrorLog“logs/subdoaman-MySite1-error.log”
CustomLog“logs/subdoaman-MySite1-error.log”通用
php_值错误_log“logs/php_error.log”
为这两个应用程序添加两个条目。假设您使用的是MAMP或XAMP之类的东西,如果可能,请不要在httpd.comf中添加任何内容,您可以做一些事情 如下面的httpd-vhosts.conf中所示 您可能需要在您的环境中查找一个目录来放置虚拟主机文件(有时您必须在httpd.conf中取消对该路径的注释) httpd-vhosts.conf中的条目示例:
<VirtualHost *:80>
ServerAdmin yourEmail@domain.com
DocumentRoot "/home/admin/laravel/public_html"
ServerName MySite1.com
ServerAlias MySite1.com
ErrorLog "logs/MySite1_com-error.log"
CustomLog "logs/MySite1_com_access.log" common
php_value error_log "logs/php_error.log"
</VirtualHost>
<VirtualHost *:80>
ServerAdmin yourEmail@domain.com
DocumentRoot "/home/admin/build"
ServerName subdomain.MySite1.com
ServerAlias subdomain.MySite1.com
ErrorLog "logs/subdoamain-MySite1-error.log"
CustomLog "logs/subdoamain-MySite1-error.log" common
php_value error_log "logs/php_error.log"
</VirtualHost>
服务器管理员yourEmail@domain.com
DocumentRoot“/home/admin/laravel/public\u html”
ServerName MySite1.com
ServerAlias MySite1.com
ErrorLog“logs/MySite1_com-error.log”
CustomLog“logs/MySite1_com_access.log”通用
php_值错误_log“logs/php_error.log”
服务器管理员yourEmail@domain.com
DocumentRoot“/主页/管理员/构建”
ServerName subdomain.MySite1.com
ServerAlias subdomain.MySite1.com
ErrorLog“logs/subdoaman-MySite1-error.log”
CustomLog“logs/subdoaman-MySite1-error.log”通用
php_值错误_log“logs/php_error.log”
为这两个应用程序添加两个条目。我现在觉得很愚蠢,问题实际上是我没有在谷歌Chrome中硬重置和清除缓存,所以它加载了以前的配置 对于其他有类似问题的人,请尝试以下解决方案: 1.为子域和域创建vhost 2.将.htaccess放入公用文件夹,而不是laravel文件夹 我当前的.htaccess如下(包括public_html和build):
选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
我现在觉得自己太傻了,问题其实是我没有在Google Chrome中硬重置和清除缓存,所以它加载了以前的配置
对于其他有类似问题的人,请尝试以下解决方案:
1.为子域和域创建vhost
2.将.htaccess放入公用文件夹,而不是laravel文件夹
我当前的.htaccess如下(包括public_html和build):
选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
您似乎没有使用框架所需的文件夹结构。在httpd.conf中是否有其他用于生成路径的条目?根据我的理解,基本上你有两个应用程序。。。一个来自public_html,另一个来自build。所以,如果我理解正确,您不需要在apache conf文件中为两个域名输入两个条目吗?@apokryfos,正如我之前所说的,它可以工作,所以我认为这不是问题所在problem@Andy是的,它确实是两个应用程序,我想我确实需要两个条目,但是怎么做呢?@Cgdl如果你只是遵循框架指南,那么你就在浪费时间修复一些不需要修复的东西。你可能有更好的事情要做。只需设置2 vhostsy您似乎没有使用框架所需的文件夹结构。在httpd.conf中是否有其他用于生成路径的条目?根据我的理解,基本上你有两个应用程序。。。一个来自public_html,另一个来自build。所以,如果我理解正确,您不需要在apache conf文件中为两个域名输入两个条目吗?@apokryfos,正如我之前所说的,它可以工作,所以我认为这不是问题所在problem@Andy是的,它确实是两个应用程序,我想我确实需要两个条目,但是怎么做呢?@Cgdl如果你只是遵循框架指南,那么你就在浪费时间修复一些不需要修复的东西。你可能有更好的事情要做。只需设置2 vhostsOkay,我就找到了vhosts.conf,当我在您的httpd.conf中创建子域时,那里似乎已经有两个不同的vhosts(可能是由CWP生成的),vhosts文件应该有一个include(应该有它的路径)。您需要取消注释,并将您的网站配置添加到该文件中,如我所示
<VirtualHost *:80>
ServerAdmin yourEmail@domain.com
DocumentRoot "/home/admin/laravel/public_html"
ServerName MySite1.com
ServerAlias MySite1.com
ErrorLog "logs/MySite1_com-error.log"
CustomLog "logs/MySite1_com_access.log" common
php_value error_log "logs/php_error.log"
</VirtualHost>
<VirtualHost *:80>
ServerAdmin yourEmail@domain.com
DocumentRoot "/home/admin/build"
ServerName subdomain.MySite1.com
ServerAlias subdomain.MySite1.com
ErrorLog "logs/subdoamain-MySite1-error.log"
CustomLog "logs/subdoamain-MySite1-error.log" common
php_value error_log "logs/php_error.log"
</VirtualHost>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
</IfModule>