【发布时间】:2016-06-08 16:13:40
【问题描述】:
我有一个 Silex 应用程序,我收到如下请求: https://.../dev/foo/bar 并想将它们重写为https://.../index.php/foo/bar
而“...”可以是从“www.asd.com”到“localhost/~asd/folder”的任何内容。
我的 .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 部分,而是尝试访问 /dev/foo/bar 而不是所需的 /foo/bar。
有什么线索吗?
【问题讨论】:
-
您的 .htaccess 在哪里?
-
嗨,我已将其添加到问题中。
-
或许将其更改为
RewriteRule ^dev/(.+)/? index.php?url=$1 [QSA,L]并使用$_GET['url']访问请求的路径。 -
尝试在您的第一个 .htaccess 顶部添加
Options +FollowSymLinks -
目录结构如何?你有
/path/to/dev/foo/bar,还是别的什么?
标签: php apache .htaccess mod-rewrite