Silex的mod_rewrite参数位于子目录中

时间:2014-06-24 09:21:44

标签: apache .htaccess mod-rewrite silex public-html

我正在弄清楚如何清理我的Silex应用程序的URL在我的apache服务器的子目录中。这是实际路径:/domains/mydomain.com/public_html/silex,包含以下子目录:

public_html/
    css/
    images/
    js/
    .htaccess
    index.php
src/
templates/
vendor/

所以,如果我转到:http://www.mydomain.com/silex/public_html/我会找到正常工作的Silex应用,但在网址中您可以看到public_html/目录。我想以某种方式隐藏它,因为about/contacts/等所有网页都会在它们前面包含该子目录。

如何避免?

这是我的.htaccess

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</IfModule>

基本上,我只是希望我的网址变成这样:

http://www.mydomain.com/silex/about
http://www.mydomain.com/silex/contacts
http://www.mydomain.com/silex/admin
(etc...)

而不是:

http://www.mydomain.com/silex/public_html/about
http://www.mydomain.com/silex/public_html/contacts
http://www.mydomain.com/silex/public_html/admin
(etc...)

非常感谢所有人! :)

1 个答案:

答案 0 :(得分:0)

以下是几个选项(您必须将它们全部放在第一个public_html的.htaccess中):

  1. 制作一个全能的RewriteRule并使用index.php来显示不同的内容 RewriteRule ^silex\/(.*)$ silex/public_html/index.php?screen=$1 [NC] - 使用这个,你可以使用$ _GET ['screen']在index.php中捕获变量并加载你想要的任何内容。
  2. 或者您可以制定具体规则以重定向到特定网页RewriteRule ^silex\/about$ silex/public_html/about.php | RewriteRule ^silex\/contacts$ silex/public_html/contacts.html等。
  3. 如果您有任何其他问题,请与我们联系。