2012-02-20 38 views
0

我的URL结构是这样排除所有文件来自重写(NGINX到Apache迁移)

http://www.example.com/folder/index.php?dir=dir1 

为了能够从

http://www.example.com/folder/dir1 

访问,并在同一时间重定向一号网址注:第二个,我htaccess的(在 '文件夹')是

Options +FollowSymLinks 

RewriteEngine On 
RewriteBase /folder 

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L] 

RewriteCond %{QUERY_STRING} ^dir=(.*)$ [NC] 
RewriteRule^%1? [L,R=301,NE] 

RewriteRule ^(.+)/? index.php?dir=$1 [L,QSA] 

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

RewriteRule ^(.*)$ index.php?dir=$1 [L,QSA] 

的重定向重写直到最近我从NGINX切换回APACHE都很完美。

麻烦的是,它现在也在重写我不想要的文件扩展名!

我如何才能将它仅应用于目录并从中排除所有文件?

+0

删除'[解决]'从你的标题,发布解决方案作为一个答案,并将其标记为接受。这就是网站的工作原理:第一篇文章包含问题,后面的文章是答案。 – 2012-02-20 14:15:01

+0

完成!我昨天试过,但对于一些SO条件,我无法回答我自己的问题! – Umer 2012-02-21 16:38:24

+0

创建答案48小时后,您可以将答案标记为已接受,以便将来的读者可以看到发布的答案*解决了问题。有关这方面的更多信息,请参阅meta上的这个主题:[我可以回答我自己的问题,甚至在提问前我知道答案的那些问题?](http://meta.stackexchange.com/a/17467/169101?can-我回答 - 我 - 拥有 - 问题偶数那些,其中-I-知道最答案前方的要求) – 2012-02-21 21:22:57

回答

0

想通了! :)

竟然出现了第一个重写之前添加

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

所以htaccess的样子:

Options +FollowSymLinks 

RewriteEngine On 
RewriteBase /folder 

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L] 

RewriteCond %{QUERY_STRING} ^dir=(.*)$ [NC] 
RewriteRule^%1? [L,R=301,NE] 

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

RewriteRule ^(.+)/? index.php?dir=$1 [L,QSA]