2012-02-20 62 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]