为了在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
您想使用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]