。htaccess以获取组合页面的已清理URL

问题描述 投票:0回答:1

为了在SEO中清理域中的URL,我需要对.htaccess文件进行一些调整,但是我需要一些帮助。

我有下一个文件:

  • ./index.php
  • ./work.php
  • ./project-page.php

URL应该是:

  • http://example.com/
  • http://example.com/work
  • http://example.com/work/first-project(项目名称摘自项目ID)

第一个问题:我是否需要在名为./project-page.php的文件夹中获取work文件,还是从.htaccess文件重定向,该如何处理?如果答案是第二个,那么我必须替换该文件中的URL,例如图像和包含文件,对吗?

第二个问题:但是,如果用户进入http://example.com/work/,该怎么办?我收到该页面不存在的错误,并且我也需要该页面。我不知道这种情况下的最佳做法是什么。

感谢您的回答!

编辑:

我已经在我的.htaccess上拥有此配置

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /

  #### PERSISTENT CONTENT ####

  # RewriteCond %{HTTP_HOST} !^esadrian.com$ [NC]
  # RewriteRule ^(.*)$ http://esadrian.com/$1 [L,R=301]

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^(.*)$ $1.php


  RewriteRule ^work-(.*)$ ver-proyecto.php?id=$1
</IfModule>

现在,我可以以example.com/work的身份访问./work.php,以example.com/work-first-project的身份访问./project-page.php?id=1,但我希望它成为example.com/work/first-project

php .htaccess url
1个回答
0
投票

您想使用RewriteRules,例如,这些将适用于前两个示例:

RewriteRule "^/$" "/index.php"
RewriteRule "^/work$" "/work.php"

https://httpd.apache.org/docs/2.4/rewrite/intro.html#rewriterule

您可以随意构造文件夹,只要第二个参数指向有效文件即可。

您可以将一个RewriteRule放在.htaccess中的其余字符之前,以删除结尾的斜杠

RewriteRule "^(.*)/$" "/$1"

您还可以将HTTP301(永久)重定向与R=301一起使用,并确保一旦通过L进行重定向,就不会再处理其他规则。

RewriteRule ^(.*)/$ /$1 [R=301,L]
© www.soinside.com 2019 - 2024. All rights reserved.