0

希望这是一个简单的。/admin我有一个非常基本的 .htaccess ,它可以将任何对(或/admin/etc)的请求重写为 .htaccess /_admin/index.php。到现在为止还挺好:

#Options All -Indexes

RewriteEngine On
RewriteBase /admin

RewriteRule ^admin/$ /_admin/index.php [QSA]
RewriteRule ^admin$ /_admin/index.php [QSA]
RewriteRule ^admin/(.+)$ /_admin/index.php [QSA]

我还想要一个通用的“catch all else”规则,它将任何其他url ( /users,/turnips//some/other/path) 重写回/index.php

我似乎无法让它工作 - 它要么是,要么server error 500/admin被重写到根页面。我确定我只需要做一些事情,RewriteCond但我无法弄清楚。

谢谢!

4

2 回答 2

1

在其他规则之后添加它。如果不应用之前的规则,这将是默认规则。

RewriteBase /
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule .*        index.php        [L,QSA]
于 2013-02-18T11:42:23.810 回答
0

首先,我建议您将L标志添加到您的重写中,这样您就可以确保在匹配重写后避免意外匹配(当然除非有意)。

其次,WordPress 使用以下代码重写所有不匹配index.php的 URL或已存在的文件。这样直接访问的文件(如图像、文本文件、下载等)不会被重写。请注意,最初它还包括RewriteCond %{REQUEST_FILENAME} !-d不重写目录的行,但您似乎想要这种行为:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php - [L]

请看看这是否符合您的需求。

于 2013-02-18T12:10:30.510 回答