1

我想将所有非文件、非目录重定向到 index.php,因此存在的所有内容都可以直接访问 - 除了一个目录(也应该转到 index.php)

我所拥有的是:

# Files
RewriteCond %{REQUEST_FILENAME} !-f

# Directories except /orderfiles/*
RewriteCond %{REQUEST_FILENAME} ^/(orderfiles/)* [OR]
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php [L,QSA]

这适用于/orderfiles 内的目录,但 /orderfiles内的文件仍会转到该文件。我尝试添加

RewriteCond %{REQUEST_FILENAME} ^/(orderfiles/)* [OR]
RewriteCond %{REQUEST_FILENAME} !-f

但这会中断并将每个文件发送到 index.php。

4

1 回答 1

4

你很接近,你想要这样的东西:

# Files
RewriteCond %{REQUEST_FILENAME} !-f

# Directories
RewriteCond %{REQUEST_FILENAME} !-d

# except /orderfiles
RewriteRule !^/?orderfiles index.php [L,QSA]

我意识到我打错了我想要做的事情,我的意思是“但将一个目录发送到 index.php”(我编辑了我的问题以更准确)。我确实希望 /orderfiles 被路由到 index.php

那么你所拥有的是正确的,但你需要改变这一行:

RewriteCond %{REQUEST_FILENAME} ^/(orderfiles/)* [OR]

到:

RewriteCond %{REQUEST_URI} ^/orderfiles/ [OR]
于 2012-09-19T21:09:17.313 回答