htaccess,将所有文件夹流量重定向到内部的单个文件

时间:2014-04-28 05:52:17

标签: php apache .htaccess

我遇到这种情况:

http://www.site.asd/folder

在FOLDER中我有一个文件从其他文件夹中获取内容。

我需要获得所有流量,例如" http://www.site.asd/folder/data1/data2/data3/data4.ext"接到这个电话" http://www.site.asd/folder/file.php?d1=data1&d2=data2&d3=data3&d4=data4.ext"不更改网址

这就是我所做的......并且没有工作......:'(

RewriteEngine On
RewriteRule ^/folder/([^/]+)/([^/]+)/([^/]+)/(.*)$ /folder/file.php?d1=$1&d2=$2&d3=$3&d4=$4 [L,QSA]

任何使这项工作的建议/解决方案?

感谢所有人!

3 个答案:

答案 0 :(得分:0)

它可能有效

RewriteEngine On
RewriteRule ^/folder/([^/]+)/([^/]+)/([^/]+)/(.*)$ /folder/file.php?d1=$1&d2=$2&d3=$3&d4=$4 [QSA,L]

答案 1 :(得分:0)

RewriteEngine On
RewriteBase /folder/

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

RewriteRule ^(.*)$/folder/file.php?d1=$1&d2=$2&d3=$3&d4=$4 [QSA,L]

这应该可行,只需将rewriteBase指向您想要的文件夹

答案 2 :(得分:0)

您需要从匹配的模式中删除前导斜杠。由于.htaccess是每个目录指令,Apache从RewriteRule URI模式中剥离当前目录路径(从而导致斜杠)。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder/([^/]+)/([^/]+)/([^/]+)/(.*)$ /folder/file.php?d1=$1&d2=$2&d3=$3&d4=$4 [L,QSA]

确保此规则位于DocumentRoot/.htaccess