【问题标题】:Rewrite URLs for SEO friendly with .htaccess on Wordpress在 Wordpress 上使用 .htaccess 重写 SEO 友好的 URL
【发布时间】:2014-08-23 09:41:35
【问题描述】:

我正在使用 Wordpress 开发一个网站(用于文章、静态页面等),但在我的主题文件夹中我创建了一个子系统(通过不需要 Wordpress 的 php-mysql 处理),它使用另一个数据库(即包含产品)。单品(product.php)的php页面是这样的:

<?php
...
if($_GET['url']){
  $url = $_GET['url'];
  $sql = "select * from `products` where url='$url'";
  $row = // start the query ($sql);
  $title=$row[0]['title'];
  $body=$row[0]['body'];
}
else{echo '404 Page.';}
?>

<body>
  <?php 
    echo "<h1>$title</h1>
          <p>$body</p>";
  ?>
</body>

它被 Wordpress 重写为 URL 中的product/,事实上,打开(即)这个 URL 就可以了:

        http://localhost:1234/my-site/product/?url=product-number-one
                                         ^
                                     product.php

但我需要重写它

http://localhost:1234/my-site/product/product-number-one

.htaccess 在 Wordpress 上默认是这样的:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my-site/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my-site/index.php [L]
</IfModule>
# END WordPress

我添加了这条规则:

RewriteRule ^(.*) product?url=$1 [R]

但不起作用。我尝试了其他解决方案,但没有成功。

【问题讨论】:

    标签: php wordpress .htaccess mod-rewrite seo


    【解决方案1】:

    你能做的很简单:

    RewriteRule ^my-site/product/([A-Za-z0-9-]+)$ /my-site/filename_of_product_page.php?url=$1 [L]
    

    使用括号中列出的表达式,您需要确保您的 url 本身与此匹配 - 因此在将名称插入数据库时​​使用清理器功能。

    【讨论】:

    • 嗨@mydoglixu,我添加了您的行并尝试打开产品页面但它不起作用:我得到“页面不存在”
    • 哎呀-我忘记了最后的 $ 和 .php。当然,您需要更改实际的文件名...
    • 嗯,我知道,但这里的问题是我无法访问 product.php,因为页面 product.php 已经被 Wordpress 重写为 URL 中的product/
    猜你喜欢
    • 1970-01-01
    • 2021-07-06
    • 2015-01-04
    • 2015-02-14
    • 1970-01-01
    • 2018-09-10
    • 2019-06-07
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多