【问题标题】:php search form and url rewrite/formattingphp 搜索表单和 url 重写/格式化
【发布时间】: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 案例)。

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

提前谢谢你。

【问题讨论】:

    标签: .htaccess url search rewrite


    【解决方案1】:

    您当然可以使用 Javascript 来制作 site.com/search/developer。对于禁用 Javascript 的极少数情况,您可以让他们提交常规 HTML 表单,最终 URL 为 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(永久重定向)。

    【讨论】:

    • 您好,感谢您的回复。我需要确认解决这种情况的最佳方法是什么。嘿,也感谢 htaccess 代码和建议。
    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2012-05-02
    • 2014-09-30
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    相关资源
    最近更新 更多