php搜索表单和网址重写/格式化

时间:2013-06-21 20:42:59

标签: .htaccess url search rewrite

所以我正在研究我的自我项目,这与我有关 找工作。我希望网址显示为: site.com/search/developer,开发人员在哪里 显然是搜索关键字。现在的事情 就像我点击搜索时那样正常 提交按钮完成它的工作)并显示网址 如: site.com/search.php?kword=developer我确定 htaccess重写不能改变php形式的方式 表现以及他们如何格式化网址。

现在我有一个想法,以便在使用时使用javascript 用户键入一个关键字,我接受并重定向 页面通过js到site.com/search/[keyword]但我是 不确定这是不是一个好主意(考虑到残疾人 javascript案例)。

是否有任何体面/推荐的方式来实现目标 我想要实现,我知道因为我有 看到一些大网站只做我不知道是什么 最好的方法。

提前谢谢。

1 个答案:

答案 0 :(得分:3)

您当然可以使用Javascript来制作site.com/search/developer。对于极少数情况下禁用Javascript,您可以让他们提交常规HTML表单,最终网址为site.com/search.php?kword=developer

好消息是,使用mod_rewrite可以处理两种情况,以便在浏览器中始终拥有漂亮的URL。

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# internal forward
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.+?)/?$ /search.php?kword=$1 [L,QSA,NC]

# external rewrite
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+search\.php\?kword=([^\s]+) [NC]
RewriteRule ^ /search/%1? [R=302,L]

验证一切正常后,将R=302替换为R=301。在测试mod_rewrite规则时,请避免使用R=301(永久重定向)。