0

在这里阅读无数答案时,我似乎找不到有效的答案。任务非常简单:/fldr/subfldr/从 REQUEST_URI 中删除,同时始终重定向到 index.php。fldr 和 subfldr 是真正的目录,而之后的所有内容都不存在。.htaccess 和 index.php 位于 subfldr 中。

当前的.htaccess:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^.*$ index.php [PT,L]

以及我尝试过的其他 RewriteRules:

RewriteRule ^(.*) index.php/$1 [PT,L]
RewriteRule ^/fldr/subfldr/?.*$ index.php [PT,L]

我什至尝试将文件夹添加到 RewriteBase。每个版本都将完全相同的内容传递给请求。

4

2 回答 2

4

与其尝试重写 REQUEST_URI 环境变量,不如尝试将“uri”参数或其他内容传递给脚本,如下所示:

RewriteEngine On
RewriteBase /fldr/subfldr/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php?uri=$0

然后你可以在 index.php 中使用 $_GET['uri']。

于 2012-08-07T22:54:27.037 回答
1

然后试试这个(htaccess 文件在你的/fldr/subfldr/目录中):

RewriteEngine On

RewriteBase /fldr/subfldr/

# pass through if already index.php
RewriteRule index\.php - [L]

# Rewrite to index.php
RewriteRule ^(.*)$ index.php [L]

应该可以使REQUEST_URI传递给 index.php/fldr/subfldr的路径的部分被删除。

于 2012-08-06T01:37:25.267 回答