【问题标题】:Apache rewrite rule to remove part of a URL from a Silex routeApache 重写规则以从 Silex 路由中删除部分 URL
【发布时间】:2015-04-03 14:27:46
【问题描述】:

我正在尝试创建一个 Apache 重写规则,该规则将删除 Silex 应用程序的部分 URL。我想在 Apache 中只保留一个虚拟主机,因此使用虚拟主机不是解决方案。 Apache 中的 DocumentRoot 是 /var/www/ ,Silex index.php 是 /var/www/ROR_V2/web/

我想要的是有这个网址:http://my-site.org/ROR_V2/user/login

在我的 Silex 应用程序中指向这条路线:/user/login

我试过了,我失败了,我不明白。

我的 Apache conf 文件(我没有使用 .htaccess)如下所示:

DocumentRoot /var/www

<Directory /var/www/ROR_V2>
    Options -Indexes
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    Require all granted
    RewriteEngine On
    RewriteBase /web
    LogLevel warn rewrite:trace8
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ROR_V2/(.*) $1
    RewriteRule ^ index.php [QSA,L]
</Directory>

我得到了一个

在此服务器上找不到请求的 URL /web/index.php。

在这里和那里找到的其他答案没有帮助,所以我决定在这里问这个问题。提前感谢您的帮助。

编辑:所以我最终做的是在 Silex 路由中对 URL 进行硬编码,使其成为以下形式的配置参数:$app['BASE_URL']='ROR_V2' 当我在我的产品服务器上时 $app['BASE_URL']='' ...当我测试时。 这当然是丑陋和不令人满意的,应该真正属于 Web 服务器配置......

【问题讨论】:

    标签: apache mod-rewrite silex


    【解决方案1】:

    我不太了解您的需求目的(为什么您使用 Silex 来记录用户?)但如果您希望 /var/www/ROR_V2/web 上的 http://my-site.org/ROR_V2/user/login 点和所有其他 URI 都基于 /var/www/ROR_V2你可以这样做:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} =/ROR/user/login
    RewriteRule ^ web/index.php [QSA,L]
    

    然后我删除了RewriteBase /web

    【讨论】:

    • 感谢您的回答。 “/user/login”只是众多路径中的一种,仅作为示例。底线是:我想用“/”作为根(而不是 /ROR_V2)编写我的 Silex 应用程序,但让访问者键入 my-site.org/ROR_V2/user/login URL,所有这些都在 my-site.org虚拟主机
    猜你喜欢
    • 1970-01-01
    • 2020-07-12
    • 2018-01-13
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    相关资源
    最近更新 更多