我有以下.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.com
和www.example.com/
映射到index.php而不是profile.php?
答案 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]
像迈克尔建议的那样。
如果您希望
,这是一个测试规则的简单工具