Html 从重写中排除所有文件(NGINX到APACHE迁移)
我的URL结构如下Html 从重写中排除所有文件(NGINX到APACHE迁移),html,apache,.htaccess,redirect,rewrite,Html,Apache,.htaccess,Redirect,Rewrite,我的URL结构如下 http://www.example.com/folder/index.php?dir=dir1 能够从 http://www.example.com/folder/dir1 同时将第一个URL重定向到第二个,我在“文件夹”中的htaccess是 Options +FollowSymLinks RewriteEngine On RewriteBase /folder RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule
http://www.example.com/folder/index.php?dir=dir1
能够从
http://www.example.com/folder/dir1
同时将第一个URL重定向到第二个,我在“文件夹”中的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。问题是它现在也在重写我不想要的文件扩展名!我如何才能只将其应用于目录并从中排除所有文件?解决了它!:
实际上必须加上
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]
从标题中删除[已解决],将解决方案作为答案发布,并将其标记为已接受。这就是网站的工作原理:第一篇帖子包含问题,后面的帖子就是答案。完成!昨天我试过了,但在某些情况下,我无法回答自己的问题!在创建答案48小时后,您可以将您的答案标记为已接受,以便将来的读者可以看到发布的答案确实解决了问题。有关这方面的更多信息,请参阅meta: