【问题标题】:.htaccess SEO dynamic urls not working.htaccess SEO 动态网址不起作用
【发布时间】:2018-11-14 20:52:32
【问题描述】:

我有一个带有查询字符串链接的页面,该查询字符串会加载另一个带有查询结果的页面。

a href="news-detail.php?nrf=<?php echo $ntitle; ?>"><?php echo "<img src=newsimgs/thumbs/".$nphoto1.">" ?></a>

现在当新的详细信息页面加载时,我得到的 url 为

https://www.xyzee.org/news-detail.php?nrf=Testing

但我希望它加载为

https://www.xyzee.org/news-detail/Testing

我在网上查找了有关 mod_rewrite 的教程并尝试了不同的示例,但由于我无法理解的原因,我无法让它工作。 我尝试过的示例代码之一是

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news-detail/([A-Za-z0-9-]+) news-detail.php?nrf=$1 [NC]

</IfModule>

当我单击加载详细信息页面的链接时,这应该可以工作,但它没有。该页面仍以 https://www.xyzee.org/news-detail.php?nrf=Testing

形式加载链接

当我直接在浏览器中输入https://www.xyzee.org/news-detail/Testing 时,页面实际上已加载,但指向 css、js、图像等的链接都已损坏。 我已经尝试了很多方法来解决这个问题,但似乎无法找到解决方案。 问题是与查询字符串的链接还是其他问题,我只是不知道。 任何帮助将非常感激。提前致谢。

【问题讨论】:

    标签: php .htaccess seo


    【解决方案1】:

    使用 mod_rewrite 不会替换文档中的链接。您必须在自己的代码中执行此操作:

    <a href="news-detail/<?php echo $ntitle; ?>"><?php echo "<img src=newsimgs/thumbs/".$nphoto1.">" ?></a>
    

    之后,您还必须更新外部资源的路径,因为被调用的页面现在位于子目录中。因此,您可以将../ 附加到详细信息页面内所有包含的客户端资源。

    为防止这种情况,更好的方法是使用绝对路径或将&lt;base /&gt; 添加到页面标题。

    【讨论】:

    • @Phillipp 感谢您的回复。现在可以了。链接结构的变化和&lt;base href="https://www.xyzee.org/"&gt; 的加入使一切变得不同。现在由我来探索更多。谢谢。
    • 假设我想要一个链接为https://www.xyzee.org/news-detail/1/Testing,我将如何重写第一页上的链接结构?如果我已将 .htaccess 更改为现在 RewriteRule ^news-detail/([0-9]+)/([0-9a-zA-Z]+) news-detail.php?nrf=$1 [NC] 如果我使用此 &lt;a href="news-detail/&lt;?php echo $newsID; ?&gt;/&lt;?php echo $ntitle; ?&gt;"&gt;&lt;?php echo "&lt;img src=newsimgs/thumbs/".$nphoto1."&gt;" ?&gt;&lt;/a&gt; 我似乎无法在响应页面上获得值
    • 您还必须使用$2(用于第二个匹配组)在重写规则中传递id - news-detail.php?nrf=$1&amp;id=$2
    • 谢谢。整理好了。
    猜你喜欢
    • 2013-10-07
    • 2012-04-17
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多