我正在使用.htaccess来创建干净的网址。 这是一段.htaccess文件:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
RewriteRule ^posts/page/([0-9]+)/$ posts.php?page=$1
RewriteRule ^posts posts.php
它工作正常,但问题是网址都有效! 有没有办法只使site.com/posts/工作,并在site.com/posts.php上重新发送'not found'(或重定向到site.com/posts /)
我觉得我在某个地方读到同一页面的两个网址对seo来说很糟糕。
答案 0 :(得分:0)
您可以创建一个重写规则,在每个“.php”网址上返回404 HTTP代码:
RewriteRule .*\.php$ - [R=404]
答案 1 :(得分:0)
这对我来说很好。希望它也适合你。
RewriteEngine On
Options -Multiviews
#For rewriting request to posts.php
RewriteCond %{REQUEST_URI} ^/posts/?$
RewriteRule .* /posts.php [L,END]
#For returning 404 on directly accessing /posts.php
RewriteCond %{REQUEST_URI} ^/posts.php$
RewriteRule .* - [R=404,L]
答案 2 :(得分:0)
要将 /posts.php 重定向到 / posts ,您可以使用此
RewriteEngine on
RewriteCond %{THE_REQUEST} /posts\.php [NC]
RewriteRule ^ /posts [NE,L,R]
#Your other rules
如果要将orignal请求重定向到404,请将RewriteRule行更改为此
RewriteRule ^ - [R=404,L]