在阅读这里无数的答案时,我似乎无法找到一个有效的答案。任务非常简单:从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中。每个版本都将完全相同的内容传递给请求。
答案 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
部分。