.htaccess RewriteRule索引

时间:2014-03-06 10:20:07

标签: php .htaccess mod-rewrite url-rewriting

首先,我想为我的英语道歉。

我正在尝试创建漂亮的网址。不幸的是,我在这个领域没什么经验。现在.htaccess文件内容如下:

RewriteEngine on
RewriteRule index/(.*)/(.*)/ index.php?category=$1&page=$2
RewriteRule index/(.*)/(.*) index.php?category=$1&page=$2
RewriteRule index/(.*)/ index.php?category=$1
RewriteRule index/(.*) index.php?category=$1
RewriteRule index/ index.php
RewriteRule index index.php

有效。重写如下链接:

site.com/index/department/workers

为:

site.com/index.php?category=department&page=workers

因此index.php可以使用此链接。如果没有“page”参数,则第三个或第四个规则处理链接。等等。

问题是在地址栏中有“索引”。我想要一个像

这样的链接

site.com/department/workers(没有索引)

这可能吗?或者有人可以给我建议我如何重写规则?

2 个答案:

答案 0 :(得分:0)

你可以尝试:

RewriteEngine on
RewriteRule (.*)/(.*)/ index.php?category=$1&page=$2
RewriteRule (.*)/(.*) index.php?category=$1&page=$2
RewriteRule (.*)/ index.php?category=$1
RewriteRule (.*) index.php?category=$1
RewriteRule / index.php

不确定这是不是你的意思。

答案 1 :(得分:0)

您可以从重写规则中删除索引。只需确保您考虑与真实文件匹配的请求,例如:

DirectoryIndex index.php

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(.+)/?$ index.php?category=$1&page=$2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/?$ index.php?category=$1

这将:

  • 将index.php定义为索引文件
  • /something/somethingelse/格式的请求重写为index.php?category=something&page=somethingelse
  • /something/格式的请求重写为index.php?category=something

请注意,您不需要两个规则来考虑end-with- /和doesnt-end-with- / - 您可以在单个规则中对此进行说明。有关设置重写规则的更多信息,请参阅the documentation