2013-12-13 30 views
0

重定向循环我有这方面的工作的.htaccess:的.htaccess当链接文件的链接,但文件犯规存在

RewriteEngine On 
DirectorySlash On 


RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)$ $1/ [R] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/?]+)$ $1.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/?]*)/([^/?]*)$ $1.php?$1=$2 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/?]*)/([^/?]*)/([^/?]*)$ $1.php?$2=$3 

问题是,如果我没有它跳转到转向的一个无限循环的任何文件http://mydomain/myfile.extension。 ..有趣的是,我知道为什么这样,但我不知道如何解决它 - 我想过两种解决方案:

1)解决方法 - 我不喜欢它:添加“不是'。 (点)“到RewriteRule正则表达式 - 但我不是一个正则表达式主,所以我不知道如何添加它(并且仍然不会崩溃当前的)

2)更好,但如何? :检查是否PHP文件 - 这重定向会导致 - 甚至存在

回答

0

试试你的规则是这样的:

DirectorySlash On 

RewriteEngine On 
RewriteBase /subdir/ 

## If the request is for a valid directory 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
## If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f 
## don't do anything 
RewriteRule^- [L] 

RewriteRule ^([^/]+)$ $1/ [L,R=301] 

RewriteCond %{DOCUMENT_ROOT}/subdir/$1.php -f 
RewriteRule ^([^/]+)/?$ $1.php [L] 

RewriteCond %{DOCUMENT_ROOT}/subdir/$1.php -f 
RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?$1=$2 [L,QSA] 

RewriteCond %{DOCUMENT_ROOT}/subdir/$1.php -f 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ $1.php?$2=$3 [L,QSA] 
+0

404未发现的一切,是不是一个文件 - 但也是我当前的URL重写域/目录/东西停止工作 –

+0

我原封不动地提及它在一个子目录,所以我guessong文件根导致问题? ('RewriteBase/subdir /') –

+0

哦,我看到不知道,让我编辑。 – anubhava