2012-10-24 140 views
0

我有一点,我可以用在一些专家的意见复杂改写情景。我有一个目录,“/目录”,其中包含一些文件。我想改写为那些不在该目录中,其也存在另一个目录中文件的请求,保持原来的目录下的URL和无效的路径返回404。例如麻烦了mod_rewrite的规则

这存在:

/directory/file.php 

这不存在:

/directory/subdirectory/anotherfile.php 

...但它确实存在这里:

/another_directory/subdirectory/anotherfile.php 

所以我想

/directory/subdirectory/anotherfile.php to refer to /another_directory/subdirectory/anotherfile.php 

...但如果文件夹/文件不/ another_directory存在/规则应该返回一个404

我已经试过各种组合,但他们都要么不返回404或者它们会重定向。这是我最新的尝试:

RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 f [OR] 
RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 d 
RewriteRule (.*) - [S=1] 
RewriteRule ^directory/(.*)$ /another_directory/$1 [L, QSA] 

如果它有助于解释为什么我有这样的情况下,/ another_directory /充满了似乎是在同一个目录中/目录中的现有文件定期再生静态文件/我正在从动态页面转移到生成静态页面,并且不希望与我的serps混淆,并希望将大量生成的文件与其他文件隔离。

回答

1

这是我从你的描述可以理解:

/directory/subdirectory/anotherfile.php 

这应该重写

/another_directory/subdirectory/anotherfile.php 

它是否存在与否。如果我是对的,这是你的答案,否则告诉我更多!

RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 -d 
RewriteRule ^directory/(.*) another_directory/$1 [L,S=1] 

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule (.*) - [L] 
RewriteRule (.*) 404.php?uri=/$1&id=1 [L] 
+0

谢谢死亡,工作就像一个魅力。 –