通过mod_rewrite忽略URL的某个部分

时间:2016-06-08 16:13:40

标签: php apache .htaccess mod-rewrite

我有一个Silex应用程序,我得到这样的请求: https://.../dev/foo/bar并希望将其重写为https://.../index.php/foo/bar

Wheras" ..."可以是" www.asd.com"到" localhost / ~asd /文件夹"。

我的.htaccess文件位于网络根目录https://.../

这是我正常使用的mod_rewrite设置:

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

我设置RewriteBase的天真尝试失败了:

  RewriteEngine On
  RewriteBase /dev
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]

我收到错误

Forbidden

You don't have permission to access /dev/index.php on this server.

同样只是重写失败:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^dev/(.*) index.php [L]

奇怪的是,它不会跳过开发部分,但它会尝试访问/ dev / foo / bar而不是所需的/ foo / bar。

有任何线索吗?

1 个答案:

答案 0 :(得分:0)

我通过组合mod_alias和mod_rewrite为我找到了一个解决方案,RewriteBase现在正常工作:

Alias /dev /app/web
<Directory /app/web>
    Options -MultiViews

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