用.htaccess清理网址,但只有一个网址

时间:2017-04-14 06:52:46

标签: php .htaccess mod-rewrite

我正在使用.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来说很糟糕。

3 个答案:

答案 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]