【问题标题】:SEO friendly .htaccess always lead me to home pageSEO 友好的 .htaccess 总是把我带到主页
【发布时间】:2013-06-25 02:55:52
【问题描述】:

我对 seo 友好的 url 有疑问。我尝试使用 .htaccess 更改我的网址,当然我有问题。

我的联系页面标题中的链接是这样的:

index.php?=contact

所以我在 .htaccess 中写了这样的规则:

Options +FollowSymLinks

RewriteEngine On
RewriteRule ^contact index.php?=contact

当然,我将标题中的链接更改为这样:

contact

现在当我点击标题上的联系人时,我会得到这样的好网址:

www.mywebsite.com/contact

但是网站总是把我带到主页(index.php)。

我做错了什么?

【问题讨论】:

    标签: php .htaccess seo


    【解决方案1】:

    在这里试一试,看看它是如何工作的。 你在index.php?contact 之间有一个= 尝试删除它。

    如果您想让所有链接 URL 友好,而不仅仅是 contact,您可以这样做。

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+) index.php?$1&%{QUERY_STRING} [L] 
    

    编辑:

    你的数组是空白的,因为你没有向它传递任何东西。我看不到您如何签入index.php 文件,但您通常将参数传递为item=value,如index.php?page=contact。您没有使用 index.php=contact 给它一个 item,因此您的数组在 mod_rewrite 中是空白的。

    根据我掌握的信息,如果您将变量用作itemvalue,如下所示

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)$ index.php?$1=$1&%{QUERY_STRING} [L]
    

    转到http://www.yoursite.com/contact

    你会从 PHP $_GET得到这个

    Array ( [contact] => contact )
    

    但如果你这样做

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)$ index.php?page=$1&%{QUERY_STRING} [L]
    

    那就去http://www.yoursite.com/contact

    然后你会从 PHP $_GET得到这个

    Array ( [page] => contact )
    

    然后你检查它像

    if($_GET["page"] == "contact"){
    //do whatever 
    }else{
     //show homepage
    }
    

    我可以看到 .htaccess 规则没有任何问题。这是你的 PHP 设置。

    【讨论】:

    • 不,没用。也许是这方面的问题。在主页上,我从 URL 收集变量,显示哪个页面取决于将收集哪个变量。如果变量不存在,则将显示主页。显然这里不存在那个变量“联系人”并显示主页。当我不使用 .htaccess 时,URL 在“联系人”末尾获取变量 (index.php?=contact) 并打开联系人页面。
    • 如果你浏览到这个链接index.php?=contact你会得到你的联系页面吗?
    • 检查您的 PHP 文件的设置并尝试执行 print_r($_GET);exit; 并查看当您尝试使用 mod_rewrite 浏览到您的联系页面时显示的内容。所以你可以看到 GET 请求中的内容。
    • 他给了我一个空数组,因此他称之为主页。在那个数组中,我必须有“联系人”才能打开联系人页面。那么为什么 .htaccess 不提供我想要的链接到我的服务器,并让他有机会从 URL 中获取“联系人”?
    • 你首先解决了原来的问题吗?如果是,我的回答是否帮助您解决了最初的问题?
    【解决方案2】:

    我说清楚了,现在开始工作了。我刚刚更改了链接,并输入了page。静态链接现在为我工作,但如何写入动态链接。比如我的链接是这样的:

    <a href=index.php?page=kategorije/$row[id_cat]/$newname>{$row['name']}</a>
    

    $newname 用“-”代替单词之间的空格。

    这种链接给我这个网址:

    www.mywebsite.com/index.php?page=category/3/The-Name-Of-Shop
    

    如何写.htaccess来获取:

    www.mywebsite.com/The-Name-Of-Shop
    

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 2012-09-02
      • 2011-05-29
      • 2013-01-22
      • 2016-03-11
      相关资源
      最近更新 更多