.htaccess删除REQUEST_URI中的文件夹路径

时间:2012-08-06 01:01:39

标签: apache .htaccess

在阅读这里无数的答案时,我似乎无法找到一个有效的答案。任务非常简单:从REQUEST_URI中删除/fldr/subfldr/,同时仍然始终重定向到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中。每个版本都将完全相同的内容传递给请求。

2 个答案:

答案 0 :(得分:3)

不要试图重写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']。

答案 1 :(得分: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]

这个 应该使得传递给index.php的REQUEST_URI删除路径的/fldr/subfldr部分。