2013-02-18 84 views
0

希望这是一个简单的网址。我有一个非常基本的.htaccess,将/admin(或/admin/etc)的任何请求重写为/_admin/index.php。到目前为止好:.htaccess重写所有'其他'网址

#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] 

我也希望是一个通用的“追赶一切”的规则重写任何其他 URL(/users/turnips//some/other/path等)回/index.php

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

谢谢!

+0

尝试在每个重写规则之前添加:'RewriteCond%{REQUEST_URI!!index \ .php [NC]',以停止错误。 – 2013-02-18 11:11:51

+0

@faa这似乎没有改变任何东西。只是为了澄清 - 我列出的.htaccess文件确实很好地工作。我只需要添加一个额外的规则,可以捕获任何不是'/ admin'的URL:所以'/ users'和其他东西都会被重写为站点根目录中的'/ index.php'(而/ admin /'仍然指向'/ _admin/index.php') – Kai 2013-02-18 11:31:22

回答

1

按照其他规则添加此项。如果以前的规则不适用,这将是默认规则。所有的

RewriteBase/
RewriteCond %{REQUEST_URI} !index\.php [NC] 
RewriteRule .*  index.php  [L,QSA] 
+0

这不会与图像等其他文件匹配吗? – kjetilh 2013-02-18 11:51:33

+0

是的,根据这个匹配所有内容:'......其他任何......“在您的评论中。但是,你想在根目录中重定向到index.php? – 2013-02-18 11:54:17

+0

我没有问这个问题,我只是怀疑他/她想这样做,我看到了 – kjetilh 2013-02-18 12:02:19

0

首先,我建议你大号标志添加到您的重写所以你一定要避免匹配重写(除非预期的课程)后,意外的比赛。

第二个WordPress使用以下代码重写所有不匹配的URL index.php或者一个已经存在的文件。这样直接访问文件,如图像,文本文件,下载等不会被重写。请注意,原来它也包括线RewriteCond %{REQUEST_FILENAME} !-d也不能重写目录,但你似乎想这种行为:

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

,请查看是否适合您的需要。