Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 搜索引擎优化友好的术语语法_Php_Jquery_.htaccess - Fatal编程技术网

Php 搜索引擎优化友好的术语语法

Php 搜索引擎优化友好的术语语法,php,jquery,.htaccess,Php,Jquery,.htaccess,我正在编写一个脚本,它将从URL中选择一个术语,并根据该术语从我的数据库中提取正确的数据 到目前为止,我已经在.htaccess文件中添加了一行内容,可以将我的URL重写为SEO友好的格式,例如: http://mydomain.com/catalogue/some-item-name 在实际的PHP页面上,我获取了变量strip破折号 $item= str_replace('-', ' ', $_GET['item']); 并将该项与我的页面上的隐藏列表相匹配,以使用jQuery提取匹配项

我正在编写一个脚本,它将从URL中选择一个术语,并根据该术语从我的数据库中提取正确的数据

到目前为止,我已经在.htaccess文件中添加了一行内容,可以将我的URL重写为SEO友好的格式,例如:

http://mydomain.com/catalogue/some-item-name
在实际的PHP页面上,我获取了变量strip破折号

$item= str_replace('-', ' ', $_GET['item']);
并将该项与我的页面上的隐藏列表相匹配,以使用jQuery提取匹配项

一切正常,除非我的物品名称中有破折号。我的脚本删除所有破折号。我应该:

  • 把实际的冲刺换成别的
  • 找到一种方法只需一个破折号
  • 如果我从db中提取术语,我可以使用WHERE item,比如“%$item%”,但是因为我必须匹配HTML代码中出现的确切术语,我有点卡住了


    谢谢。

    我们使用一个系统,在该系统中,我们根据数据库检查传入的URI,并查看向何处发送用户。这样,我们就可以从系统内部(比如id)完全分离URI

    我们将传入URI与数据库中的
    URI
    字段相匹配,并从正确的类(控制器)或重定向加载正确的函数。它还可以选择向函数发送参数

    让我举个例子

    +---------+---------+----------+----------+--------+
    | uri     | class   | function | new_uri  | vars   |
    +---------+---------+----------+----------+--------+
    | faq     | support | faq      |          |        |
    +---------+---------+----------+----------+--------+
    | sandwich| content | news     |          | 1      |
    +---------+---------+----------+----------+--------+
    | banana  |         |          | sandwich |        |
    +---------+---------+----------+----------+--------+
    
    案例1: 用户请求test.com/faq,URI路由器在URI='faq'上找到匹配项,并告诉系统在支持类或控制器中显示任何
    faq()

    案例2: 用户请求test.com/sandwich,这是ID为1的新闻报道的快捷方式。因此,URI路由器向content类中的
    news()
    发送一个调用,我们可以从变量
    $\u GET['vars'][0]
    中检索id 1

    案例3: 用户请求test.com/banana,由于我们不再从事香蕉行业,因此已将其移动到test.com/sandwich。因此URI路由器礼貌地发送301并将用户重定向到正确的位置


    此方法有多种扩展方式,例如允许在uri字段中使用通配符等。希望它也能对您有所帮助。

    大多数网站的工作方式类似于stackoverflow(检查URL),因此简而言之:
    http://mydomain.com/catalogue/12345/some-item-nam 
    然后您只需引用ID即可(因此文本根本不重要).为什么不将URI重写为
    http://mydomain.com/catalogue/ID/some-item-name
    并使用(数字)ID获取项目?如果两个项目具有相同的名称(或名称被重写后具有相同的名称),这同样有效。是的,我也在考虑这样做,但在我这么做之前,我想我会尝试在不使用id的情况下找出答案。@santa这取决于您的应用程序。如果它只是一个博客,你就不会想要URL中的ID,因为直接链接会违反直觉。如果它是一个购物或其他东西,链接会腐烂。它不是一个博客,而是一个参考应用程序。我更喜欢保持URL干净和SEO友好。目前,我使用jQuery使用:$(“#my_item”).text()提取该项;有没有办法使“模糊”匹配?但如果我将我的项目设置为$item=“my item one”,并且我可以潜在地将其匹配为:“my item one”,这对我有什么帮助?好吧,您必须为URL的外观制定某种规则集。我决定去掉非单词字符,用破折号替换所有空格。所以首先我做一个初始替换,用破折号和一些特殊字符替换空白,然后我做
    preg_替换('/[^\w-]/I','.$slug)
    。结果是可读性很好的URI,只要规则不变,就应该匹配。