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

Posted

技术标签:

【中文标题】php 搜索表单和 url 重写/格式化【英文标题】:php search form and url rewrite/formatting 【发布时间】:2013-06-19 02:27:03 【问题描述】:

所以我正在做一个我自己的项目,它与 求职。我希望网址显示为: 开发者所在的 site.com/search/developer 搜索关键字明显。现在的事情 是不是像往常一样当我点击搜索时( 提交按钮完成它的工作)并出现网址 作为: site.com/search.php?kword=developer 我确定 htaccess 重写不能改变 php 表单的方式 行为以及它们如何格式化 url。

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

是否有任何体面/推荐的方法来实现 我正在努力实现,我知道这是因为我有 看到一些大网站只做我不知道是什么 最好的方法。

提前谢谢你。

【问题讨论】:

【参考方案1】:

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

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

通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_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(永久重定向)。

【讨论】:

您好,感谢您的回复。我需要确认解决这种情况的最佳方法是什么。嘿,也感谢 htaccess 代码和建议。

以上是关于php 搜索表单和 url 重写/格式化的主要内容,如果未能解决你的问题,请参考以下文章

PHP解决搜索时在URL地址栏输入中文字符搜索结果出现乱码

隐藏表单域URL重写cookiesession

重写URL以删除查询字符串

使用 PHP 和 .htaccess 重写 URL

LNMP部署(地址重写)

使 PHP url 具有独特的格式