2015-04-03 74 views
1

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

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

点在我的Silex应用这条路线:/用户/注册

我都试过了,我失败了,我不明白这一点。

我的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的路线内的网址,使得它在形式的配置参数:$app['BASE_URL']='ROR_V2',当我为我的督促服务器上 和 $app['BASE_URL']='' ...当我正在测试。 当然,这是丑陋的,不令人满意的,应该属于网络服务器配置...

回答

0

我真的不明白你的需求的目的(为什么你只使用Silex来登录用户?)但如果你想上/var/www/ROR_V2/web和所有其他URI http://my-site.org/ROR_V2/user/login点是基于/var/www/ROR_V2你可以这样做:

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

我删除RewriteBase /web

+0

谢谢您的回答。 “/ user/login”仅仅是一个例子中的一条路线。底线是:我想用“/”作为根(不是/ ROR_V2)编写我的Silex应用程序,但有访问者输入my-site.org/ROR_V2/user/login URL,所有这些在my-site.org虚拟主机 – LocoNeko73 2015-04-08 00:37:44