的.htaccess URL重写

问题描述:

有谁能够告诉我重写规则,所以我可以做一个URL是这样的:的.htaccess URL重写

http://www.mysite.com/index.php?page=directory1/page 
what I'm trying to do is remove the "index.php?page=" so i get a 
"http://www.mysite.com/directory1/page" 

这就是Drupal这样做;它与toneplex的例子非常相似,但它并没有混淆扩展检查,它在favicon.ico上增加了一个额外的检查,这是许多浏览器自动请求的;如果你缺少favicon.ico,这将节省额外的打击你的PHP代码。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule^index.php [L] 

我假设你正在试图通过引导index.php文件的一切。所以试试看。任何不存在的文件或目录将强制通过index.php文件。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php 
+0

鉴于您已经检查过现有的文件和目录,为什么要对RewriteRule中的文件扩展名进行附加检查? – 2011-05-21 13:03:27

+0

如果其中一个扩展名不存在,它将被发送到Web服务器404,而不必由index.php文件 – toneplex 2011-05-21 13:11:21

+0

来处理它似乎并不特别有用;如果你对这些丢失的文件有很多点击,那么你还有其他问题需要处理。我添加的示例检查了favicon.ico,因为浏览器会自动请求它,而不会将其存入您的HTML中,但其他检查可能是多余的(您无法猜测所有随机扩展,并且他可能希望重定向结束的请求在其中一个扩展中)。 – 2011-05-21 13:16:37