htaccess帮助,从URL中删除一个字符串

时间:2010-10-11 09:27:10

标签: apache .htaccess mod-rewrite server-configuration

我想知道,是否可以从URL中删除index.php?基本上在网站的某些页面上我有这种结构,

http://www.domain.com/index.php/members/register,但其他网页我有这样的网址结构http://www.domain.com/category/products/id/5,我想知道是否可以使用htaccess删除index.php以及需要时的任何属性斜杠?我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

如果要全局重写index.php / controller / action

这个.htaccess配置应该可以解决问题:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule> 

此配置检查Apache是​​否存在磁盘上的文件/目录(即请求与磁盘上的实际资源匹配),并在需要时将请求重写为your front controller

所以http://www.domain.com/resources/image.png应该返回图像资源。 http://www.domain.com/user/show/5应透明地重写为http://www.domain.com/index.php/user/show/5

使用此配置,您可以删除应用程序URL中的所有index.php引用,并将重写保留在Web服务器上。

答案 1 :(得分:0)

是的,你可以。根据此规则,任何请求的/index.php都将被删除:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php[/?\ ]
RewriteRule ^index\.php(/(.*))?$ /$2 [L,R=301]

但您应该从一开始就使用正确的URL,以便您的应用程序提供链接不包含/index.php的文档。