PHP重写规则

时间:2009-02-17 23:25:01

标签: .htaccess mod-rewrite

我的应用使用的实际网址是:

http://site.com/search.php?search=iPhone 

但我希望能够用

实现同样的目标
http://site.com/iPhone

我没有重写规则的经验,我该如何设置呢?

解决方案已经有效但新地址显示在地址栏中。我认为可以将其设置为好像页面位置

http://site.com/iPhone

无需更改显示

http://site.com/search.php?search=iPhone 

这可能吗?感谢。

3 个答案:

答案 0 :(得分:11)

在您网站的根目录中创建一个名为.htaccess的文件并将其放入其中。

RewriteEngine on 
Options +FollowSymlinks
RewriteBase / 

RewriteRule ^(.*) search.php?search=$1 [R]

应该做的伎俩。

但我建议您更具体一点,因此可能需要您网址中搜索目录的用户。例如,而不是mysite.com/IPhone使用mysite.com/search/IPhone,它将像

一样工作
RewriteEngine on 
Options +FollowSymlinks
RewriteBase / 

RewriteRule ^search/(.*) search.php?search=$1 [R]

这样可以更容易地获得重定向的普通网页,例如关于我们或基本主页。

正如克里斯所说,这不是PHP而是Apache这样做,以及它是否有效取决于您的托管设置。

答案 1 :(得分:5)

您需要在.htaccess文件中指定类似的内容:

RewriteEngine on
RewriteRule /(.*) /search.php?search=$1

检查:

答案 2 :(得分:3)

据我所知,重写规则不是PHP的一部分,而是Apache(特别是mod_rewrite)或您正在使用的任何服务器。对于Apache,您需要在服务器上有一个名为.htaccess的文件,并在其中添加如下内容:

RewriteEngine on
RewriteRule ^(\w+)/?$ /index.php?search=$1

^(\w+)/?$是一个正则表达式 - 它匹配1个或多个字符的任何单词,然后可能是/。因此,它将site.com/iPhone更改为site.com/index.php?search=iPhone。听起来不错?