1

我有以下.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

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

4

2 回答 2

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]
于 2012-06-26T19:09:45.527 回答
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 测试器

于 2012-06-26T19:26:34.937 回答