mod_rewrite配置为/

时间:2012-06-26 19:06:27

标签: .htaccess mod-rewrite

我有以下.htaccess配置

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteRule \.git - [F,L]

RewriteRule ^help help.php [L]
RewriteRule ^home home.php [L]
RewriteRule ^profile profile.php [L]
RewriteRule ^index index.php [L]

RewriteRule ^users/([0-9]+) profile.php?id=$1 [L]

RewriteRule ^([A-Za-z0-9-]+)?$ profile.php?u=$1 [L]

现在,每当有人访问目标网页时,都会使用profile.php?u=$1的最后一条规则重定向。

如何更改配置,以便www.example.comwww.example.com/映射到index.php而不是profile.php?

2 个答案:

答案 0 :(得分:1)

匹配^index规则之后的空字符串或单斜杠:

RewriteRule ^help help.php [L]
RewriteRule ^home home.php [L]
RewriteRule ^profile profile.php [L]
RewriteRule ^index index.php [L]
# Match root request with optional slash
RewriteRule ^/?$ index.php [L]

答案 1 :(得分:0)

我建议不要这样做。

相反,只需使用此

即可
<IfModule mod_rewrite.c> 
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

这会将你的所有请求发送到index.php页面,从那里创建一个router.php并使用php将请求传递给该页面。

但如果你这样做,只需添加

 RewriteRule ^/?$ index.php [L]
像迈克尔建议的那样。

如果您希望

,这是一个测试规则的简单工具

Apache RewriteRule tester