我是否正确地认为我应该通过一个 php 函数运行我网站上的所有链接,该函数使链接成为像上面这样的 SEO 链接类型,然后我会在我的 .htaccess 文件中获得 MOD_REWRITE 以显示实际页面的内容我需要?
这是一种方法,它基于MVC模型,其中一切都通过控制器。例如,如果您网站上的所有内容都是通过/index.php
(例如http://yoursite.com/index.php?page_id=1234)访问的,那么您只需在 index.php 中添加一些代码来处理重定向(如果请求的 URL 包含index.php
),然后使用 mod_rewrite 将 SEO 友好的 URL 重写为指向/index.php
. 如果您已经有一个站点但它不这样做,那么您可以重新设计或将其迁移到控制器或尝试其他方法。
通过其他方式,您可以通过检查请求与 URI 来严格使用 mod_rewrite 处理所有事情。假设您有一个页面:http ://www.evample.com/page.php?id=1234您可以在文档根目录的 htaccess 文件中使用这些规则:
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /page.php\?id=([0-9]+)
RewriteRule ^ /page/%1/ [R=301]
这使得请求http://www.evample.com/page.php?id=1234得到一个 301 重定向到http://www.evample.com/page/1234/
现在您需要在内部编写一个规则将其指向 page.php(请注意,MVC 解决方案也需要这部分):
RewriteRule ^page/([0-9]+)/$ /page.php?id=$1 [L,QSA]
这不包括重定向中的页面标题,因为 mod_rewrite 对您网站的页面名称一无所知。如果您通过 page.php 而不是使用 `%{THE_REQUEST} 进行重定向,则可以获取页面标题。
我是否需要禁止来自搜索引擎的未经编辑的 URL 以避免重复内容问题?
只要您使用 301 进行重定向,索引机器人就会指向新的 URL 并解决重复的问题。