3

我目前在共享服务器上使用Silex 框架托管一个网站,但我遇到了问题...

Silex 就像 Symfony,在 /web/ 子文件夹中有一个 app.php 文件:该网站只能通过 URL website.com/web/ 访问。我无法创建虚拟主机,因为它是共享服务器,所以我认为解决方案是使用 .htaccess 文件...

我设法自动将 website.com 重定向到 website.com/web/,但我不太喜欢这个选项。我宁愿 website.com 直接指向 website.com/web/ 但我不知道如何仅使用 .htaccess 文件来做到这一点。我已经尝试解决这个问题几个小时了,这让我很生气......

目前我使用这个文件:

<IfModule mod_rewrite.c>
    Options -MultiViews
    
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ web/app.php [QSA,L]
</IfModule>

但它只是将您从 website.com 重定向到 website.com/web

无论如何我可以使用 .htaccess 文件使根 url 直接指向 /web 文件夹吗?

非常感谢 :)

4

2 回答 2

6

如果您只想通过键入http://example.com来访问http://example.com/subdirectory ,这应该可以。

# .htaccess main domain to subdirectory redirect 

RewriteEngine on 
# Change example.com to be your main domain. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteCond %{REQUEST_URI} !^/subdirectory/ 
# Don't change the following two lines. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteRule ^(.*)$ /subdirectory/$1 
# Change example.com to be your main domain again. 
# Change 'subdirectory' to be the directory you will use for your main domain 
# followed by / then the main file for your site, index.php, index.html, etc. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ subdirectory/ [L]
于 2016-05-01T21:19:43.733 回答
1

试试这个 htaccess 配置:

DirectoryIndex web/app.php

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} !^/web/
    RewriteRule (.*) /web/$1
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        # When mod_rewrite is not available, we instruct a temporary redirect of
        # the start page to the front controller explicitly so that the website
        # and the generated links can still be used.
        RedirectMatch 302 ^/$ /web/app.php/
        # RedirectTemp cannot be used instead
    </IfModule>
</IfModule>
于 2013-11-29T07:31:53.567 回答