重定向而不更改网址

时间:2013-10-29 20:42:50

标签: php regex .htaccess mod-rewrite redirect

我总是吮吸.htaccess 我正在尝试建立一个网站,所有请求都通过index.php进行,但我希望网址像www.sample.com/home。有效的网址将加载www.sample.com/index.php?page=home

现在我有

 RewriteRule ^/([a-z0-9-]+) /index.php?page=$1 [NC,PT,L]

即使regexr测试显示它应该也不起作用。我暂时将其更改为r = 301,因此我可以看到重定向,并注意到www.sample.com/home正在重定向到www.sample.com/index.php?page=/index.php :(

有什么想法吗?

注意我已经搜索了一段时间,我找不到真正有效的解决方案。这不是我的第一站。

1 个答案:

答案 0 :(得分:3)

将您的规则更改为:

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

RewriteRule ^([a-z0-9-]+)/?$ /index.php?page=$1 [QSA,L,NC]

参考:Apache mod_rewrite Introduction